91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

java線索二叉樹遍歷怎么實現

小億
101
2023-08-02 10:43:16
欄目: 編程語言

在Java中,可以使用遞歸或迭代的方式實現二叉樹的遍歷。下面分別介紹這兩種方法。

  1. 遞歸遍歷:

遞歸遍歷二叉樹的過程非常簡單,可以按照先序、中序和后序的順序遞歸遍歷二叉樹。

public class TreeNode {
int val;
TreeNode left;
TreeNode right;
public TreeNode(int val) {
this.val = val;
}
}
// 先序遍歷
public void preorderTraversal(TreeNode root) {
if (root != null) {
System.out.print(root.val + " ");
preorderTraversal(root.left);
preorderTraversal(root.right);
}
}
// 中序遍歷
public void inorderTraversal(TreeNode root) {
if (root != null) {
inorderTraversal(root.left);
System.out.print(root.val + " ");
inorderTraversal(root.right);
}
}
// 后序遍歷
public void postorderTraversal(TreeNode root) {
if (root != null) {
postorderTraversal(root.left);
postorderTraversal(root.right);
System.out.print(root.val + " ");
}
}
  1. 迭代遍歷:

迭代遍歷二叉樹使用棧來記錄遍歷的節點。具體步驟如下:

import java.util.Stack;
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
public TreeNode(int val) {
this.val = val;
}
}
// 先序遍歷
public void preorderTraversal(TreeNode root) {
if (root == null) {
return;
}
Stack<TreeNode> stack = new Stack<>();
stack.push(root);
while (!stack.isEmpty()) {
TreeNode node = stack.pop();
System.out.print(node.val + " ");
if (node.right != null) {
stack.push(node.right);
}
if (node.left != null) {
stack.push(node.left);
}
}
}
// 中序遍歷
public void inorderTraversal(TreeNode root) {
if (root == null) {
return;
}
Stack<TreeNode> stack = new Stack<>();
TreeNode curr = root;
while (curr != null || !stack.isEmpty()) {
while (curr != null) {
stack.push(curr);
curr = curr.left;
}
curr = stack.pop();
System.out.print(curr.val + " ");
curr = curr.right;
}
}
// 后序遍歷
public void postorderTraversal(TreeNode root) {
if (root == null) {
return;
}
Stack<TreeNode> stack1 = new Stack<>();
Stack<TreeNode> stack2 = new Stack<>();
stack1.push(root);
while (!stack1.isEmpty()) {
TreeNode node = stack1.pop();
stack2.push(node);
if (node.left != null) {
stack1.push(node.left);
}
if (node.right != null) {
stack1.push(node.right);
}
}
while (!stack2.isEmpty()) {
System.out.print(stack2.pop().val + " ");
}
}

以上就是Java實現二叉樹遍歷的方法,根據不同的需求選擇遞歸或迭代的方式來遍歷二叉樹。

0
钟祥市| 微博| 合山市| 乌什县| 河间市| 韩城市| 佛冈县| 湛江市| 新田县| 巧家县| 老河口市| 宣武区| 南华县| 扬中市| 华宁县| 武义县| 呼伦贝尔市| 耒阳市| 洮南市| 察哈| 乌拉特前旗| 慈利县| 喀什市| 洞头县| 海南省| 长葛市| 淮阳县| 梅河口市| 安陆市| 黄浦区| 万荣县| 道真| 溆浦县| 开封县| 黄大仙区| 洛南县| 新安县| 汉沽区| 无为县| 衡水市| 恩施市|