本人电子系,只为一学生。心喜计算机,小编以怡情。
给定一棵二叉查找树和一个新的树节点,将节点插入到树中。
你需要保证该树仍然是一棵二叉查找树。
思路:从最顶层一次次比较,最后落在想要插入的节点上。
就像小时候玩的落球,从上面不断的碰撞,最后落在一个出口。
注意:这道题值相同时默认落在右侧。
public TreeNode insertNode(TreeNode root, TreeNode node) {
// write your code here
if(root==null) return node;
if(node==null) return root;
int temp=node.val;
TreeNode p=root;
TreeNode pre=p;//保存前面的一个节点,用来插入
while(p!=null)
{
pre=p;
if(p.val<=temp)//不断的改变方向落下
p=p.right;
else
p=p.left;
}//退出循环时的pre就是我们想要插入的结点
//插入结点
if(pre.val>temp)
pre.left=node;
if(pre.val<=temp)
pre.right=node;
return root;
}