stack
阿新 • • 發佈:2017-05-12
aps treenode urn img .get ret fcc 技術 pop
5月12日
1 94 Binary Tree Inorder Traverse 棧
public List<Integer> inorderTraversal(TreeNode root) { List<Integer> list = new ArrayList<>(); Stack<TreeNode> stack = new Stack<>(); TreeNode cur = root; while (cur != null || !stack.isEmpty()) {View Codewhile (cur != null) { stack.push(cur); cur = cur.left; } cur = stack.pop(); list.add(cur.val); cur = cur.right; } return list; }
2 103 Binary Tree Zigzag Level order Treverse
publicView CodeList<List<Integer>> zigzagLevelOrder(TreeNode root) { List<List<Integer>> res = new ArrayList<>(); traver(root, res, 0); return res; } public void traver(TreeNode root, List<List<Integer>> res, int level) { if (root == null) return; if (res.size() <= level) { res.add(new LinkedList<>()); } List<Integer> list = res.get(level); if (level % 2 == 0) list.add(root.val); else list.add(0, root.val); traver(root.left, res, level + 1); traver(root.right, res, level + 1); }
3 144 Binary Tree Preorder Traverse
public List<Integer> preorderTraversal(TreeNode root) { List<Integer> res = new ArrayList<>(); Stack<TreeNode> stack = new Stack<>(); TreeNode node = root; while (node != null || !stack.isEmpty()) { while (node != null) { res.add(node.val); stack.push(node); node = node.left; } if (!stack.isEmpty()) { node = stack.pop(); node = node.right; } } return res; }View Code
4 145 Binary Tree Postorder Traverse
public List<Integer> postorderTraversal(TreeNode root) { List<Integer> res = new ArrayList<>(); Stack<TreeNode> stack = new Stack<>(); TreeNode pre = null; while (root != null || !stack.isEmpty()) { while (root != null) { stack.push(root); root = root.left; } if (!stack.isEmpty()) { TreeNode peek = stack.peek(); if (peek.right != null && pre != peek.right) { root = peek.right; } else { stack.pop(); res.add(peek.val); pre = peek; } } } return res; }View Code
stack