我想用遞歸方法在二叉樹中插入節點。但是一旦它脫離了方法,根將成爲新的節點,並且左側的孩子和右側的孩子都是空的。有了這個,我正試圖學習遞歸如何工作。另外,遞歸方法總是要返回一些東西。以下是代碼。遞歸插入節點
public class BinaryNode {
int key;
BinaryNode left;
BinaryNode right;
public BinaryNode(int key){
this.key = key;
// this.left = left;
//this.right = right;
}
}
public class BinaryTree {
BinaryNode root;
public void insert(int key){
BinaryNode newNode = new BinaryNode(key);
if(root == null){
root = newNode;
}else{
BinaryNode focusNode = root;
BinaryNode parent;
while(true){
parent = focusNode;
if(key<focusNode.key){
focusNode = focusNode.left;
if(focusNode==null){
parent.left= newNode;
return;
}
}else{
focusNode = focusNode.right;
if(focusNode==null){
parent.right= newNode;
return;
}
}
}
}
}
public BinaryNode recursiveInsert(int key, BinaryNode node){
BinaryNode newNode = new BinaryNode(key);
if (node == null){
root = newNode;
}
else{
if(key < node.key){
root.left = recursiveInsert(key, node.left);
}
else{
root.right = recursiveInsert(key, node.right);
}
}
return root;
}
public String toString(){
String toTree = null;
return toTree;
}
public static void main(String[]args){
BinaryTree tree = new BinaryTree();
tree.recursiveInsert(7, tree.root);
tree.recursiveInsert(6, tree.root);
tree.recursiveInsert(4, tree.root);
tree.recursiveInsert(8, tree.root);
tree.recursiveInsert(9, tree.root);
tree.recursiveInsert(5, tree.root);
}
}
我想要的方法是recursiveInsert。謝謝!!
@LeonardoPugliese我試圖插入節點遞歸。我也做了迭代的方式。 – ilaunchpad
@ilaunchpad請接受相應的答案。 –