我正在练习二进制搜索树:在HackerRank上插入。这是问题陈述:
您将获得指向二叉搜索树的根的指针以及要插入树中的值。将此值插入二叉搜索树中的适当位置,并返回更新的二叉树的根。你只需要完成这个功能。
我提交了以下解决方案并通过了6个测试用例中的4个,并且6个测试用例中的2个失败了问题是我无法看到两个失败的测试用例,因此我不确定他们为什么失败。我试图创建自己的测试用例,它们似乎正常工作。你能想到我的解决方案不适合的任何测试用例吗?我希望有人能指出我正确的方向
/* Node is defined as :
class Node
int data;
Node left;
Node right;
*/
static Node Insert(Node root,int value)
{
if (root == null){
root = new Node();
root.data = value;
return root;
}
ArrayList<Node> list = new ArrayList<Node>();
list.add(root);
getNode(list,value);
return root;
}
static void getNode(ArrayList<Node> list,int value){
ArrayList<Node> newList = new ArrayList<Node>();
for (int i=0;i<list.size();i++){
newList.add(list.get(i).left);
newList.add(list.get(i).right);
if(list.get(i).left == null){
list.get(i).left = new Node();
list.get(i).left.data = value;
return;
}
if(list.get(i).right == null){
list.get(i).right = new Node();
list.get(i).right.data = value;
return;
}
}
getNode(newList,value);
}
答案 0 :(得分:0)
静态节点插入(节点根,int值) {
if(root == null)
{
Node new_node = new Node();
new_node.data=value;
root = new_node;
}
if(value < root.data)
{
if(root.left != null)
{
Node.Insert(root.left,value);
}
else
{
Node new_node = new Node();
new_node.data = value;
root.left=new_node;
}
}
if(value > root.data)
{
if(root.right !=null)
{
Node.Insert(root.right,value);
}
else
{
Node new_node = new Node();
new_node.data=value;
root.right=new_node;
}
}
return root;
}
答案 1 :(得分:0)
二叉树的基本实现..希望这可以帮助你
class Node {
Integer data;
Node left;
Node right;
Node(Integer data) {
this.data=data;
left=null;
right=null;
}
}
public class BinarySearchTree {
private Node root;
private Node searchElement;
public BinarySearchTree() {
root=null;
}
public void insert(Integer data) {
if(root==null) {
root=new Node(data);
System.out.println("root");
}else {
root=insert(data,root);
}
}
public Node insert(Integer data,Node traverse) {
if(traverse==null){
traverse=new Node(data);
}
else if(data<traverse.data){
traverse.left=insert(data,traverse.left);
}
else {
traverse.right=insert(data,traverse.right);
}
return traverse;
}
public Node search(int element,Node traverse) {
if(traverse==null) {
System.out.println("Element not found");
return traverse;
}else if(element<traverse.data) {
traverse.left=search(element,traverse.left);
return traverse;
}else if(element>traverse.data) {
traverse.right=search(element,traverse.right);
return traverse;
}else if(element==traverse.data) {
System.out.println("element found");
System.out.println(traverse);
return traverse;
}
return traverse;
}
public void search(int element) {
searchElement=search(element,root);
}
public static void main(String... args){
BinarySearchTree bst=new BinarySearchTree();
bst.insert(10);
bst.insert(12);
bst.insert(6);
bst.insert(100);
bst.search(12);
}
}