二叉树遍历(递归与非递归实现)

来源:互联网 发布:linux 系统编程delay 编辑:程序博客网 时间:2024/06/07 08:10

二叉树的遍历:

public class TreeNode {    public String key;    public String val;    public TreeNode left;    public TreeNode right;}

递归遍历:

    /** 递归实现中序遍历 */    public static void iterativeInorder(TreeNode p) {        if (p != null){            iterativeInorder(p.left);            System.out.println(p.getVal());            iterativeInorder(p.right);        }    }

非递归遍历:

    /** 非递归实现中序遍历 */    public static void iterativeInorder2(TreeNode p) {        Stack<TreeNode> stack = new Stack<TreeNode>();        TreeNode node = p;        while (node != null || stack.size() > 0) {            while (node != null) {                stack.push(node);                node = node.getLeft();            }            if (stack.size() > 0) {                node = stack.pop();                System.out.println(node.getVal());                node = node.getRight();            }        }    }
0 0
原创粉丝点击