import java.util.Stack; /** * IteratorTraversal */ public class IteratorTraversal { /** * 前序遍历 * @param root */ public void preOrder(TreeNode root) { Stack<TreeNode> stack = new Stack<>(); if (root == null) { return; } stack.push(root); while (!stack.empty()) { TreeNode currentNode = stack.pop(); if (currentNode != null) { System.out.print(currentNode.val + " "); stack.push(currentNode.right); stack.push(currentNode.left); } } } /** * 中序遍历 * @param root */ public void inOrder(TreeNode root) { Stack<TreeNode> stack = new Stack<>(); if (root == null) { return; } TreeNode currentNode = root; while (currentNode != null || !stack.empty()) { while (currentNode != null) { stack.push(currentNode); currentNode = currentNode.left; } if (!stack.empty()) { currentNode = stack.pop(); System.out.print(currentNode.val + " "); currentNode = currentNode.right; } } } /** * 后续遍历 * @param root */ public void postOrder(TreeNode root) { Stack<TreeNode> stack = new Stack<>(); if (root == null) { return; } } /** * 按层遍历 * @param node */ public void levelOrder(TreeNode node) { } }