ツリーループ


ツリーの遍歴:
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 stack = new Stack();
        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();
            }
        }
    }