public static void preOrderUnRecur(TreeNode root){
if (root == null) return;
Stack<TreeNode> stack = new Stack<>();
stack.add(root);
while (!stack.isEmpty()){
TreeNode temp = stack.pop();
System.out.print(temp.val+" ");
if (temp.right != null){
stack.add(temp.right);
}
if (temp.left != null){
stack.add(temp.left);
}
}
}
public static void inOrderUnRecur(TreeNode root){
if (root == null) return;
Stack<TreeNode> stack = new Stack<>();
while (!stack.isEmpty() || root != null){
if (root != null ){
stack.push(root);
root = root.left;
}else {
TreeNode temp = stack.pop();
System.out.print(temp.val+" ");
root = temp.right;
}
}
}
采用2个栈,这个与前序遍历类似,只不过是在该打印的时候,用一个栈将其存放起来,最后打印。
前序:前右左
采用一个栈后 :左右前
public static void posOrderUnRecur(TreeNode root){
if (root == null) return;
Stack<TreeNode> stack = new Stack<>();
Stack<TreeNode> stack1 = new Stack<>();
stack.add(root);
while (!stack.isEmpty()){
TreeNode temp = stack.pop();
stack1.add(temp);
if (temp.left != null){
stack.add(temp.left);
}
if (temp.right != null){
stack.add(temp.right);
}
}
while (!stack1.isEmpty()){
System.out.print(stack1.pop().val+" ");
}
System.out.println();
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。