LeeCode-94. 二叉樹的中序遍歷

robot2017發表於2024-09-04

基本概念

  • 二叉樹

BinaryTree

二叉樹的結構如上圖所示,由一系列左-中-右節點組成的樹狀資料結構,其基本結構如下所示,由一箇中間節點向左右分叉成兩個節點,故稱二叉樹。

BasicStrcture

  • 中序遍歷

看二叉樹基本的結構左-中-右三個節點,中間為Root,左邊為Left,右邊為Right。按順序排列的話有C(3,2)=6種,其中左右,右左演算法類似。以中間Root為參考,固定左-右,則排序 左-中-右 為中序遍歷,中-左-右 為先序遍歷,左-右-中 為後序遍歷

解題思路

題目要求中序遍歷,即對於所有的節點,都是左-中-右的順序遍歷所有節點,考慮到二叉樹結構本身的特殊性,採用指標依次訪問,比較難以遍歷全域性。考慮到整棵樹本身可以看作一個基本節點,每個節點本身又是一個基本節點,如下圖所示,類似想到遞迴呼叫。先寫出基本結構的呼叫順序,再依次對各子節點做遞迴呼叫。

BasicStrcture

實現程式碼

vector<int> inorderTraversal(TreeNode* root) {
    vector<int> result;
    if (root)
    {
        if (root->left)
        {
            auto temp = inorderTraversal(root->left);
            result.insert(result.end(), temp.begin(), temp.end());
        }

        result.push_back(root->val);

        if (root->right)
        {
            auto temp = inorderTraversal(root->right);
            result.insert(result.end(), temp.begin(), temp.end());
        }

    }
    return result;
}

相關文章