LeeCode-94. 二叉树的中序遍历

基本概念

  • 二叉树

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;
}

posted @ 2024-09-04 22:01  robot2017  阅读(27)  评论(0编辑  收藏  举报