您的位置:首页 > 编程语言 > Java开发

前序中序后序非递归Java版

2018-04-08 17:23 309 查看
前序遍历

public void preOrder(TreeNode root)
{
LinkedList<TreeNode> stack = new LinkedNode<>();
TreeNode node = root;
while(node!=null || !stack.isEmpty())
{
if(node!=null)
{
System.out.println(node.value);
stack.push(node);
node = node.left;
}
else
{
node = stack.pop();
node = node.right;
}
}
}


中序遍历

public void inOrder(TreeNode root){
LinkedNode<TreeNode> stack = new LinkedNode<>();
TreeNode node = root;
while(node!=null || !stack.isEmpty()){
if(node!=null){
stack.push(node);
node = node.left;
}else{
node = stack.pop();
System.out.println(node.value);
node = node.right;
}
}
}


后序遍历

public void postOrder(TreeNode root){
Stack<TreeNode> s1 = new Stack();
Stack<TreeNode> s2 = new Stack();
TreeNode node = root;
s1.push(node);
while(!s1.empty()){
node = s1.pop();
s2.push(node);
if(node.left!=null) s1.push(node.left)
if(node.right!=null) s1.push(node.right);
}
while(!s2.empty()){
System.out.println(s2.value);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Algorithm