二叉树的遍历:
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();
}
}
}