题解 | #重建二叉树#

重建二叉树

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

int ptr=0;
struct TreeNode* build(struct TreeNode* root,int* preOrder,int* vinOrder,int front,int rear)
{
    if(front>rear) return NULL;
    root=malloc(sizeof(struct TreeNode));
    root->val=preOrder[ptr++];
    int i=front;
    for(;i<rear;i++) if(vinOrder[i]==root->val) break;
    root->left=build(root->left,preOrder,vinOrder,front,i-1);
    root->right=build(root->right,preOrder,vinOrder,i+1,rear);
    return root;
}

struct TreeNode* reConstructBinaryTree(int* preOrder, int preOrderLen, int* vinOrder, int vinOrderLen ) {
    int front=0,rear=vinOrderLen-1;
    struct TreeNode* root;
    return build(root,preOrder,vinOrder,front,rear);
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 18:35
简历上把1个月实习写成了3个月,会进行背调吗?
码农索隆:一个月有一个月的实习经历,三个月有三个月的实习经历
点赞 评论 收藏
分享
LemontreeN:有的兄弟有的我今天一天面了五场,4个二面一个hr面
投递字节跳动等公司9个岗位
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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