非递归遍历二叉树

来源:互联网 发布:php 大文件分片上传 编辑:程序博客网 时间:2024/05/17 02:44
    public static void preOrder(Node root){        //check        Stack stack = new Stack();          Node p = root;          while(p != null){            stack.push(p);            System.out.print(p.value + " ");            if(p.left != null){                   p = p.left;                  continue;            }            while(true){                Node node = (Node)stack.pop();                if(node == null) {                    return;                }                if(node.right != null){                    p = node.right;                    break;                }            }        }    }
public static void inOrder(Node root){          //check        Stack stack = new Stack();          Node p = root;          while(p != null){              stack.push(p);              if(p.left != null){                   p = p.left;                  continue;            }              while(true){                Node node = (Node)stack.pop();                if(node == null) {                    return;                }                System.out.print(node.value + " ");                if(node.right != null){                    p = node.right;                    break;                }            }        }      }  
    public static void postOrder(Node root){        //check        Stack stack = new Stack();        Node p = root;        while(p != null){            stack.push(p);            if(p.left != null){                p = p.left;                continue;            }            Node last = null;            while(true){                Node node = (Node)stack.peek();                if(node == null){//根节点                    return;                }                //要记下上次的点,避免处理完右子节点,接着处理父节点时陷入死循环                if((node.right == null) || (node.right == last)){                    last = (Node)stack.pop();                    System.out.print(node.value + " ");                }else{                    p = node.right;                    break;                }            }        }    }
0 0