1. 程式人生 > >LeetCode 第144題 二叉數的前序遍歷

LeetCode 第144題 二叉數的前序遍歷

輸出 root 一個 ont etc mil 叠代 oid while

給定一個二叉樹,返回它的 前序 遍歷。

示例:

輸入: [1,null,2,3]
1
\
2
/
3

輸出: [1,2,3]
進階: 遞歸算法很簡單,你可以通過叠代算法完成嗎?

思路: 與二叉樹前序遍歷類似.

 
 1 class Solution144 {
 2 
 3   List<Integer> res = new ArrayList<>();
 4 
 5   //遞歸
 6   public List<Integer> preorderTraversal(TreeNode root) {
 7     search(root);
8 return res; 9 } 10 11 void search(TreeNode root) { 12 if (root != null) { 13 res.add(root.val); 14 search(root.left); 15 search(root.right); 16 } 17 } 18 19 //非遞歸 20 public List<Integer> preorderTraversal_2(TreeNode root) { 21 Stack<TreeNode> stack = new
Stack<>(); 22 TreeNode currNode = root; 23 while (currNode != null || !stack.isEmpty()) { 24 while (currNode != null) { 25 res.add(currNode.val); 26 stack.push(currNode); 27 currNode = currNode.left; 28 } 29 30 currNode = stack.pop();
31 currNode = currNode.right; 32 } 33 34 return res; 35 } 36 }

LeetCode 第144題 二叉數的前序遍歷