897. 递增顺序搜索树(待补充)

个人注释

法一:

法二:

​
struct TreeNode* createTreeNode(int val) {  //创建一个树节点,其值为val,左右子树为空
    struct TreeNode* ret = malloc(sizeof(struct TreeNode));
    ret->val = val, ret->left = ret->right = NULL;
    return ret;
}

struct TreeNode* resNode;

void inorder(struct TreeNode* node) {
    if (node == NULL) { //递归结束条件
        return;
    }
    inorder(node->left);    //node左子树遍历

    // 在中序遍历的过程中修改节点指向
    resNode->right = node;  //使resNode右指针指向node
    node->left = NULL;  //删除node的左指向
    resNode = node; //resNode标记当前所处node,使 后续resNode右指针 指向新的node,形成顺序查找树

    inorder(node->right);   //当前node->right的前序遍历
}
struct TreeNode* increasingBST(struct TreeNode* root) {
    struct TreeNode* dummyNode = createTreeNode(-1);    //创建值为-1(值为几不重要)的树节点 避免下面resNode=dummyNode因dummyNode为空而使程序无法运行
    resNode = dummyNode; //由下面inorder操作可知:dummyNode右指针指向为 通过操作resNode所形成的顺序查找树的 头(head)指针
    inorder(root);
    return dummyNode->right;
}

​

作者:力扣官方题解
链接:https ://leetcode.cn/problems/increasing-order-search-tree/solutions/741961/di-zeng-shun-xu-cha-zhao-shu-by-leetcode-dfrr/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值