標籤:
Given a binary tree, return the preorder traversal of its nodes‘ values.
For example:
Given binary tree {1,#,2,3},
1 2 / 3
return [1,2,3].
二叉樹的前序走訪,根節點→左子樹→右子樹
解題思路一:
遞迴實現,JAVA實現如下:
public List<Integer> preorderTraversal(TreeNode root) {List<Integer> list = new ArrayList<Integer>();if (root == null)return list;list.add(root.val);list.addAll(preorderTraversal(root.left));list.addAll(preorderTraversal(root.right));return list; }
解題思路二:
使用stack實現,JAVA實現如下:
public List<Integer> preorderTraversal(TreeNode root) {List<Integer> list = new ArrayList<Integer>();if (root == null)return list;Stack<TreeNode> stack = new Stack<TreeNode>();stack.push(root);TreeNode pop = root;while (!stack.isEmpty()) {pop = stack.pop();list.add(pop.val);if (pop.right != null)stack.add(pop.right);if (pop.left != null)stack.add(pop.left);}return list;}
Java for LeetCode 144 Binary Tree Preorder Traversal