免责声明:这是我在家庭作业中遇到的问题。我需要重构我的add方法和我的findnodelocation方法,以便当finddnodelocation返回将添加新值的父节点时,它会继续并使用add方法将值添加到需要去的二叉搜索树中
public void add(int val) {
/*Adds a new node to the binary tree after traversing the tree and figuring out where it belongs*/
Node nodeObjToAdd = new Node(val);
if(root == null){
//if node root is not null root = new node value
root = nodeObjToAdd;
}
Node nodeTraversed = root;
traverseAdd(nodeTraversed, nodeObjToAdd);
}
public Node findNodeLocation(Node focusNode, int val) {
/*returns where a new node with the given value will be placed based on the RootNode, and passed in value.*/
if(val < focusNode.value && focusNode.leftChild != null){
return focusNode.leftChild;
}
if(val >= focusNode.value && focusNode.rightChild != null){
return focusNode.rightChild;
}
else
return this.root;
}
答案 0 :(得分:0)
在移动到另一个节点之前,您需要检查节点中的数据。它是这样的:
// Case where the data would be child of my left child
if(data < node.Data && node.leftChild != null)
return node.leftChild.find(data);
// Case where the data would be child of my right child
if(data >= node.data && node.rigthChild != null)
return node.rightChild.find(data);
// If it is not a child of either, then it would be added as my own child
else
return this;