树的遍历基础
这里强推一篇博客:https://blog.youkuaiyun.com/chinesekobe/article/details/110874773
- 树的深度遍历
- 先序:逆时针跑
- 中序:垂直剪影
- 后序:逆时针跑并剪葡萄
- 树的广度遍历
直接上代码吧
package com.ws.leetcode.august;
import java.util.Stack;
public class TreeTest {
public static void main(String[] args) {
TreeNode treeNode = new TreeNode(4, new TreeNode(2, new TreeNode(1), new TreeNode(3)), new TreeNode(7, new TreeNode(6), new TreeNode(9)));
TreeTest treeTest = new TreeTest();
treeTest.PreOrder(treeNode);
System.out.println("\n");
treeTest.PreOrderWithStack(treeNode);
treeTest.InnerOrder(treeNode);
System.out.println("\n");
treeTest.AfterOrder(treeNode);
}
public void PreOrder(TreeNode treeNode) {
if (treeNode == null) {
return;
}
System.out.print(treeNode.val);
PreOrder(treeNode.left);
PreOrder(treeNode.right);
}
public void InnerOrder(TreeNode treeNode) {
if (treeNode == null) {
return;
}
InnerOrder(treeNode.left);
System.out.print(treeNode.val);
InnerOrder(treeNode.right);
}
public void AfterOrder(TreeNode treeNode) {
if (treeNode == null) {
return;
}
AfterOrder(treeNode.left);
AfterOrder(treeNode.right);
System.out.print(treeNode.val);
}
public void PreOrderWithStack(TreeNode treeNode) {
if (treeNode == null) {
return;
}
Stack<TreeNode> stack = new Stack<>();
stack.push(treeNode);
while (!stack.empty()) {
TreeNode innerNode = stack.pop();
System.out.print(innerNode.val);
if (innerNode.right != null) {
stack.push(innerNode.right);
}
if (innerNode.left != null) {
stack.push(innerNode.left);
}
}
}
public void InnerOrderWithStack(TreeNode treeNode) {
Stack<TreeNode> stack = new Stack();
TreeNode node = treeNode;
while (node != null || !stack.isEmpty()) {
if (node != null) {
stack.push(node);
node = node.left;
} else {
TreeNode tem = stack.pop();
System.out.print(tem.val + "->");
node = tem.right;
}
}
}
public void AfterOrderWithOrder(TreeNode treeNode) {
}
}
package com.ws.leetcode.august;
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode() {
}
TreeNode(int val) {
this.val = val;
}
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}