LintCode 85-在二叉查找树中插入节点

本人电子系,只为一学生。心喜计算机,小编以怡情。

给定一棵二叉查找树和一个新的树节点,将节点插入到树中。

你需要保证该树仍然是一棵二叉查找树。

思路:从最顶层一次次比较,最后落在想要插入的节点上。
就像小时候玩的落球,从上面不断的碰撞,最后落在一个出口。
注意:这道题值相同时默认落在右侧。

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;
}
    原文作者:二叉查找树
    原文地址: https://blog.csdn.net/Jason__Liang/article/details/54022417
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞