首页 > 代码库 > stack
stack
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()) { while (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
public List<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; }
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; }
stack
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。