weixin_45994861 2020-06-13 16:05 采纳率: 50%
浏览 126

用两种方法递归寻找,二叉树的最左端结点问题?

今天在leetcode上写了一个关于删除二叉排序树上指定结点的一个题,在待删除结点有左右子树的情况下,找出右子树的最左端的结点;

//第一种;

struct TreeNode* findMin(struct TreeNode *root)
{
    struct TreeNode *p;
    if(root->left) 
       p=findMin(root->left);
    return root;
}

第二种;

struct TreeNode* Findleftmin(struct TreeNode *root){
      if(root->left)
       return   Findleftmin(root->left);
  return root; 
}

第一种发生了错误 第二种正确,我没法现问题所在,有大佬能解释一下哪有问题?

完整的代码:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
struct TreeNode* Findleftmin(struct TreeNode *root){
      if(root->left)
       return   Findleftmin(root->left);
  return root; 
}

struct TreeNode* deleteNode(struct TreeNode* root, int key){
       struct TreeNode *p;
       if(root==NULL)
         return NULL ;
       if(root->val >key)
         root->left=deleteNode(root->left,key);
       else if(root->val < key)
          root->right=deleteNode(root->right ,key);  
      else {
                if(root->left && root->right)
                 {

                       p=Findleftmin(root->right);
                       root->val=p->val;
                       root->right=deleteNode(root->right  , root->val);
                 }
                 else {
                      p= root;
                      if(root->right==NULL && root->left ==NULL)  //为叶结点时;
                      root=NULL;
                      else if(root->left )   // 仅有左子树;
                      root=root->left;
                      else if(root->right)  // 仅有右子树;
                      root=root->right;

                      free(p);
                 }
      }
       return root;
}
  • 写回答

1条回答 默认 最新

  • 关注
    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!