力扣日更897递增顺序搜索树

力扣日更897递增顺序搜索树

haimian
2024-12-18 / 0 评论 / 4 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2024年12月18日,已超过123天没有更新,若内容或图片失效,请留言反馈。

给你一棵二叉搜索树的 root ,请你 按中序遍历 将其重新排列为一棵递增顺序搜索树,使树中最左边的节点成为树的根节点,并且每个节点没有左子节点,只有一个右子节点。

示例 1:
m4u1zpzo.png

输入:root = [5,3,6,2,4,null,8,1,null,null,null,7,9]
输出:[1,null,2,null,3,null,4,null,5,null,6,null,7,null,8,null,9]
示例 2:
m4u1zvzo.png

输入:root = [5,1,7]
输出:[1,null,5,null,7]

提示:

树中节点数的取值范围是 [1, 100]
0 <= Node.val <= 1000

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
 void inorder(struct TreeNode* Node,struct TreeNode** vec,int* len){
     if(!node){
         return;
     }
     inorder(node->left,vec,len);
     vec[*len] = node;
     *len+=1;
     inorder(node->right,vec,len);
 }
struct TreeNode* increasingBST(struct TreeNode* root) {
    struct TreeNode** vec = malloc(sizeof(struct TreeNode*)* 101);
    int len = 0;
    inorder(root,vec,&len);
    struct TreeNode dummy,*p = &dummy;
    int i = 0;
    for(i = 0;i<len;i++){
        p->left = NULL;
        p->right = vec[i];
        p=p->right;
    }
    p->left = p->right=NULL;
    return dummy.right;
     
}

m4u20hm2.png

0

评论 (0)

取消