二叉树前中后序遍历非递归实现

Posted kristse

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树前中后序遍历非递归实现相关的知识,希望对你有一定的参考价值。

package MyExc;

import java.util.Stack;

class TreeNode{
    int data;
    TreeNode left;
    TreeNode right;
}


public class BinaryTree {
    public void preOrder(TreeNode head){
        Stack<TreeNode> stack = new Stack<>();
        stack.add(head);
        while(!stack.isEmpty()){
            head=stack.pop();
            System.out.println(head.data);
            if(head.right==null){
                stack.push(head.right);
            }
            if(head.left==null){
                stack.push(head.left);
            }
        }
    }

    public void inOrder(TreeNode head){
        Stack<TreeNode> stack = new Stack<>();
        //只要不为空,一直往左走
        if(head!=null){
            head=head.left;
        }else{//为空,弹出一个,然后向右走一步
            head=stack.pop();
            System.out.println(head.data);
            head = head.right;
        }
    }

    public void postOrder(TreeNode head){
        Stack<TreeNode> stack = new Stack<>();
        Stack<TreeNode> help = new Stack<>();
        stack.push(head);

        while (!stack.isEmpty()){
            head = stack.pop();
            help.push(head);
            if(head.left!=null){
                stack.push(head.left);
            }
            if(head.right!=null){
                stack.push(head.right);
            }
            while (!help.isEmpty()){
                System.out.println(help.pop().data);
            }
        }
    }
}

以上是关于二叉树前中后序遍历非递归实现的主要内容,如果未能解决你的问题,请参考以下文章

二叉树前中序非递归遍历

二叉树前中后序遍历_(非递归)

二叉树前中后序遍历_(非递归)

二叉树前中后序遍历递归转循环

二叉树:前中后序迭代方式的写法就不能统一一下么?

leetcode算法总结 —— 二叉树前中后序遍历(迭代和递归两种解法)