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