Leetcode 144. Binary Tree Preorder Traversal

Given a binary tree, return the preorder traversal of its nodes' values.

For example:
Given binary tree {1,#,2,3},
return [1,2,3].

Note: Recursive solution is trivial, could you do it iteratively?

題意:前序遍歷二叉樹。

思路:
1、分治的方法遞歸遍歷中左右

public List<Integer> preorderTraversal(TreeNode root) {
    List<Integer> res = new ArrayList<>();
    if (root == null) {
        return res;
    }

    helper(root, res);

    return res;
}

private void helper(TreeNode node, List<Integer> res) {
    if (node == null) {
        return;
    }

    res.add(node.val);
    helper(node.left, res);
    helper(node.right, res);
}
  1. 通過棧來記錄當前遍歷節(jié)點的右節(jié)點,達到中左右的遍歷效果。

     public List<Integer> preorderTraversal2(TreeNode root) {
     List<Integer> res = new ArrayList<>();
     if (root == null) {
         return res;
     }
    
     //stack記錄右邊待遍歷的節(jié)點
     Stack<TreeNode> stack = new Stack<>();
     while (root != null) {
         res.add(root.val);
         if (root.right != null) {
             stack.add(root.right);
         }
    
         root = root.left;
         if (root == null && !stack.isEmpty()) {
             root = stack.pop();
         }
     }
    
     return res;
     }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容