package java2019;
import java.util.Stack;
public class Demo24 {
public void InorderTravel(TreeNode root){
Stack<TreeNode> stack = new Stack<TreeNode>();
TreeNode p = root;
while(p!=null||!stack.empty()){
while(p!=null){
stack.push(p);
p=p.left;
}
p=stack.pop();
System.out.println(p.val+" ");
p=p.right;
}
}
public void PreorderTravel(TreeNode root){
Stack<TreeNode> stack = new Stack<TreeNode>();
TreeNode p = root;
while(p!=null||!stack.empty()){
while(p!=null){
System.out.println(p.val+" ");
stack.push(p);
p=p.left;
}
p=stack.pop();
p=p.right;
}
}
public TreeNode ConvertBSToBiList(TreeNode root){
if(root==null)
return null;
Stack<TreeNode> stack = new Stack<TreeNode>();
TreeNode p = root;
TreeNode pre = null;
boolean isFirst = true;
while(p!=null || !stack.empty()){
while(p!=null){
stack.push(p);
p=p.left;
}
p=stack.pop();
if(isFirst){
root=p;
pre=root;
isFirst=false;
}else{
pre.right=p;
p.left=pre;
pre=p;
}
p=p.right;
}
return root;
}
public static void main(String[] args) {
TreeNode root = new TreeNode(5);
TreeNode n1 = new TreeNode(3);
TreeNode n2 = new TreeNode(10);
TreeNode n3 = new TreeNode(1);
TreeNode n4 = new TreeNode(4);
TreeNode n5 = new TreeNode(6);
TreeNode n6 = new TreeNode(11);
root.left=n1;
root.right=n2;
n1.left=n3;
n1.right=n4;
n2.left=n5;
n2.right=n6;
Demo24 d24 = new Demo24();
d24.PreorderTravel(root);
}
}