バイナリツリーのトラバースの配列順序の最初の3つの後に[] LeetCode配列再帰

序文

:つまりトラバーサルLeetCodeの3種類の3つのトピックに対応する
先行順走査:144バイナリツリートラバーサルの先行予約
行きがけ:94 INORDERバイナリツリートラバーサル
後順:145バイナリツリートラバーサル後順

繰り返し、その後の更新を追加しないで、当面、現在の記事では、再帰的にしているので、非常に単純な再帰的に、私はについてお話しましょう

トラバースする方法の三種類、泥棒のように見えますが、実際には、問題がこれにノードを追加する最初のものです

バイナリツリーの例

ここに画像を挿入説明
空の二分木、木の各ノードは全て、例えば良好もたらしたツリーに加えて、一般的な
A→B→D→E:順トラバーサル →G→C→F
予約購入を:D→B→G→E →A→C→Fの
後順:D→G→E→B →F→C→A

データツリー

これは、ツリーノードのカスタム、非常にシンプルな構造、左ノード、右ノード、値そのものであります

class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;

    TreeNode(int x) {
        val = x;
    }
}

再帰的に

予約限定トラバーサル

ここに画像を挿入説明

class Solution {
    public List<Integer> preorderTraversal(TreeNode root) {
        List<Integer> res = new ArrayList<>();
        if (root == null) return res;
        res.add(root.val);
        res.addAll(preorderTraversal(root.left));
        res.addAll(preorderTraversal(root.right));
        return res;
    }
}

予約限定!

class Solution {
    public List<Integer> inorderTraversal(TreeNode root) {
        List<Integer> res = new ArrayList<>();
        if (root == null) return res;
        res.addAll(inorderTraversal(root.left));
        res.add(root.val);
        res.addAll(inorderTraversal(root.right));
        return res;
    }
}

後順

class Solution {
    public List<Integer> postorderTraversal(TreeNode root) {
        List<Integer> res = new ArrayList<>();
        if (root == null) return res;
        res.addAll(postorderTraversal(root.left));
        res.addAll(postorderTraversal(root.right));
        res.add(root.val);
        return res;
    }
}

反復して

https://leetcode.com/problems/binary-tree-postorder-traversal/discuss/45551/Preorder-Inorder-and-Postorder-Iteratively-Summarization

リンクは、国際版のleetcodeであることに注意してください、自動的に中国語版のleetcodeをオンにすることが可能です

129元記事公開 ・は 147個のように勝っ ビュー80000 +を

おすすめ

転載: blog.csdn.net/qq1515312832/article/details/104251742