美文网首页
94.二叉树中序

94.二叉树中序

作者: su945 | 来源:发表于2020-06-23 22:28 被阅读0次

    题目描述

    给定一个二叉树,返回它的中序 遍历。
    输入: [1,null,2,3]
    1

    2
    /
    3

    输出: [1,3,2]

    问题分析

    二叉树中序遍历的特点为先左,再根,最后右节点的顺序进行遍历。因为主要可分为两种方法

    • 递归遍历
    • 利用栈性质进行遍历 (双百)

    解题思路1

    • 递归遍历
    class Solution {
     public:
    
         //vector<int> ans;
         void helper(TreeNode* root, vector<int> &ans)
         {
             if (root->left != nullptr)
             {
                 helper(root->left, ans);
             }
             ans.push_back(root->val);
             if (root->right != nullptr)
             {
                 helper(root->right, ans);
             }
             //return ans;
    
         }
         vector<int> inorderTraversal(TreeNode* root) {
             vector<int> ans;
             //注意判断条件
             TreeNode* head = root;
             if (head == nullptr)
             {
                 return ans;
             }
             helper(head, ans);
             return ans;
         }
     };
    

    解题思路2

    利用栈后进先出的存储结构方式进行遍历

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
     public:
    
         vector<int> inorderTraversal(TreeNode* root) {
             vector<int> ans;
             //注意判断条件
             TreeNode* head = root;
             stack <TreeNode*> S;
    
             while (head || S.size())
             {
                 //遍历到最左子树,依次放入栈中
                 while (head)
                 {
                     S.push(head);
                     head = head->left;
                 }
                 head = S.top();
                 S.pop();
                 ans.push_back(head->val);
                 head = head->right;
             }  
             return ans;
         }
     };
    

    相关文章

      网友评论

          本文标题:94.二叉树中序

          本文链接:https://www.haomeiwen.com/subject/vwvkfktx.html