题解 | #重建二叉树#

重建二叉树

https://www.nowcoder.com/practice/8a19cbe657394eeaac2f6ea9b0f6fcf6

/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 * };
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param preOrder int整型一维数组 
 * @param preOrderLen int preOrder数组长度
 * @param vinOrder int整型一维数组 
 * @param vinOrderLen int vinOrder数组长度
 * @return TreeNode类
 */
struct TreeNode* maketree(int pl , int pr , int* preOrder , int vl , int vr , int* vinOrder){
    if(pl > pr || pr < 0 || vl > vr || vr < 0) return NULL;
    struct TreeNode* root = (struct TreeNode*)malloc(sizeof(struct TreeNode));
    root->val = preOrder[pl];
    int i = vl;
    while(i <= vr){
        if(vinOrder[i] == preOrder[pl]) break;
        i++;
    }
    root->left = maketree(pl + 1 , pl + i - vl , preOrder , vl , i - 1 , vinOrder);
    root->right = maketree(pl + i - vl + 1 , pr , preOrder , i + 1 , vr , vinOrder);
    return root;
}
struct TreeNode* reConstructBinaryTree(int* preOrder, int preOrderLen, int* vinOrder, int vinOrderLen ) {
    // write code here
   int pl = 0 , pr = preOrderLen - 1;
   int vl = 0 , vr = vinOrderLen - 1;
   struct TreeNode* root = maketree(pl , pr , preOrder , vl , vr , vinOrder);
   return root;
}

全部评论

相关推荐

07-10 14:08
已编辑
江西农业大学 Java
念旧select:做完把项目放到自己硬盘里给他看,看完拷走
点赞 评论 收藏
分享
06-12 17:46
门头沟学院 Java
运营你豪哥:来说重点: ​1.项目前置,时间倒序。​​ 2.​项目描述强化结果与量化效果(STAR原则里的R)。​​ ​3.个人技能精炼,明确掌握程度,突出核心。​​ ​4.增加强有力开头的个人总结部分。​​ 5.​优化教育背景(成绩排名)、合并奖项与活动。​​
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务