public static class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
/*
* 1 2 3 4 5 6 null 7
*
*/
public static void main(String[] args) {
TreeNode t1 = new TreeNode(1);
TreeNode t2 = new TreeNode(2);
TreeNode t3 = new TreeNode(3);
TreeNode t4 = new TreeNode(4);
TreeNode t5 = new TreeNode(5);
TreeNode t6 = new TreeNode(6);
TreeNode t7 = new TreeNode(7);
t1.left = t2;
t1.right = t3;
t2.left = t4;
t2.right = t5;
t3.left = t6;
t4.left = t7;
System.out.print("qianxu1: ");
qianxu1(t1);
System.out.println();
System.out.print("qianxu2: ");
qianxu2(t1);
System.out.println();
System.out.print("zhongxu1: ");
zhongxu1(t1);
System.out.println();
System.out.print("zhongxu2: ");
zhongxu2(t1);
System.out.println();
System.out.print("houxu1: ");
houxu1(t1);
System.out.println();
System.out.print("houxu2: ");
houxu2(t1);
System.out.println();
}
public static void qianxu1(TreeNode root) {
if (root != null) {
System.out.print(root.val + " ");
qianxu1(root.left);
qianxu1(root.right);
}
}
public static void qianxu2(TreeNode root) {
Stack<TreeNode> s = new Stack<TreeNode>();
TreeNode tp = root;
while (tp != null || !s.empty()) {
while (tp != null) {
System.out.print(tp.val + " ");
s.push(tp);
tp = tp.left;
}
if (!s.empty()) {
tp = s.pop();
tp = tp.right;
}
}
}
public static void zhongxu1(TreeNode root) {
if (root != null) {
zhongxu1(root.left);
System.out.print(root.val + " ");
zhongxu1(root.right);
}
}
public static void zhongxu2(TreeNode root) {
Stack<TreeNode> s = new Stack<TreeNode>();
TreeNode tp = root;
while (tp != null || !s.empty()) {
while (tp != null) {
s.push(tp);
tp = tp.left;
}
if (!s.empty()) {
tp = s.pop();
System.out.print(tp.val + " ");
tp = tp.right;
}
}
}
public static void houxu1(TreeNode root) {
if (root != null) {
houxu1(root.left);
houxu1(root.right);
System.out.print(root.val + " ");
}
}
public static void houxu2(TreeNode root) {
Stack<TreeNode> s = new Stack<TreeNode>();
TreeNode tp = root;
TreeNode pre = null;
while (tp != null || !s.empty()) {
while (tp != null) {
s.push(tp);
tp = tp.left;
}
tp = s.peek();
if (tp.right == null || pre == tp.right) {
System.out.print(tp.val + " ");
pre = tp;
s.pop();
tp = null;
} else {
tp = tp.right;
}
}
}
二叉树非递归遍历
最新推荐文章于 2022-11-01 22:15:10 发布