java 二叉树的递归遍历和非递归遍历

来源:互联网 发布:转换视频格式的软件 编辑:程序博客网 时间:2024/04/29 16:21
    //root left right    public void preTrace(Node rootNode){        if(rootNode != null){            System.out.print(rootNode.data+",");            preTrace(rootNode.left);            preTrace(rootNode.right);        }    }    public void preStackTrace(Node root){        TreeStack stack = new TreeStack(30);        stack.push(root);        System.out.println("preTraceStack");        while(!stack.isEmpty()){            Node tmp = stack.pop();            System.out.print(tmp.data+",");            if(tmp.right != null)                stack.push(tmp.right);            if(tmp.left != null)                stack.push(tmp.left);        }        System.out.println();    }    // left root right    public void midTrace(Node rootNode){        if(rootNode != null){            midTrace(rootNode.left);            System.out.print(rootNode.data+",");            midTrace(rootNode.right);        }    }    public void midStackTrace(Node root){        TreeStack stack = new TreeStack(30);        Node cur = root;        System.out.println("midTraceStack");        while(cur != null || !stack.isEmpty()){            while(cur != null){                stack.push(cur);                cur = cur.left;            }            if(!stack.isEmpty()){                cur = stack.pop();                System.out.print(cur.data+",");                cur = cur.right;            }        }        System.out.println();    }    //left right root    public void backTrace(Node rootNode){        if(rootNode != null){            backTrace(rootNode.left);            backTrace(rootNode.right);            System.out.print(rootNode.data+",");        }    }    public void backStackTrace(Node root){        System.out.println("backTraceStack:");        TreeStack stack = new TreeStack(30);        stack.push(root);        Node cur = root.left;        Node last;        while(!stack.isEmpty()) {            while(cur != null){                stack.push(cur);                cur = cur.left;            }            if(stack.peek().right == null){                System.out.print(stack.peek().data+",");                last = stack.pop();                if(stack.isEmpty())                    break;                if(last == stack.peek().right){                    stack.peek().right = null;                }            }            cur = stack.peek().right;        }        System.out.println();    }

原创粉丝点击