leetcode-重建二叉树-83

Posted 天津 唐秙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode-重建二叉树-83相关的知识,希望对你有一定的参考价值。

题目要求

代码实现

/**
 * Definition for binary tree
 * struct TreeNode 
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) 
 * ;
 */
#include <stack>
class Solution 
public:
    TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> in) 
        //判断特殊情况
        if(pre.size() == 0 || in.size() == 0)
        
            return nullptr;
        
        
        stack<TreeNode*> st;//栈
        int preIndex = 0;//前序遍历下标
        int inIndex = 0;//中序遍历下标
        //处理树的根节点
        TreeNode* root = new TreeNode(pre[preIndex]);//确定根节点
        st.push(root);
    
        //遍历 前序遍历数组,生成对应的根节点
        for(preIndex = 1; preIndex < pre.size(); preIndex++)
        
            TreeNode* node = st.top();
            //之前压栈的元素 不等于 中序遍历数组中开头的数
            if(node->val != in[inIndex])
            
                node->left = new TreeNode(pre[preIndex]);
                st.push(node->left);
            
            else
            
                while(!st.empty() && st.top()->val == in[inIndex])
                
                    node = st.top();
                    st.pop();
                    inIndex++;
                
                node->right = new TreeNode(pre[preIndex]);
                st.push(node->right);
            
        
    
        return root;
    
;

以上是关于leetcode-重建二叉树-83的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode重建二叉树详解

Leetcode——重建二叉树

[LeetCode]剑指 Offer 07. 重建二叉树

LeetCode-重建二叉树(前序遍历+中序遍历)

leetcode刷题(133)——剑指 Offer 07. 重建二叉树

LeetCode(剑指 Offer)- 07. 重建二叉树