2

给出一个指向二叉搜索树根的指针和一个要插入树中的值。将此值插入二进制搜索树中的适当位置,并返回更新的二叉树的根。你只需要完成这个功能。二进制搜索树 - 插入

我给了我的代码,但一个测试用例不起作用。这里是我的代码:

static Node Insert(Node root,int value){ 
    Node d =root; 
    Node q = new Node(); 
    q.left = null; 
    q.right=null; 
    q.data = value; 
    while(true){ 
     if(value<d.data){ 
      if(d.left==null){d.left = q; 
          return root; } 
      else{ 
       d= d.left ; 
      } 
     } 
     else{ 
      if(value>d.data){ 
       if(d.right==null){d.right=q; 
           return root;} 
       else d = d.right; 
      } 
     } 
    } 
} 
+0

我什至不能拿起测试用例对不起...... – Abishek

+0

所以这是代码,它的东西坏了,但你不能告诉我们什么? –

+0

但是如果该值等于d.data,那么..... –

回答

3

你缺少两种情况:value == d.data和空树。

value == d.data:在这种情况下,树不会以任何方式被修改,但是您的代码不会中断,并且会以无限循环结束。

简单的解决办法是在插入这些行while -loop:

if(value == d.data) 
    return root; 

,其中树是空的情况下是相当实现特定的,所以很难提出这种情况下,任何解决方案。

+0

缺少的情况是最初为空的树。 – Abishek

+0

@LUGOWright哦,对,我完全忘记了这种情况。尽管这是除了我的另一种情况。 – Paul

+0

是的,除了你的 - @保罗 – Abishek