美文网首页Leetcode && Lintcode程序员Android知识
LintCode 在二叉查找树中插入节点

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

作者: 六尺帐篷 | 来源:发表于2016-12-18 21:26 被阅读26次

题目

给定一棵二叉查找树和一个新的树节点,将节点插入到树中。
你需要保证该树仍然是一棵二叉查找树。

分析

分别用递归和非递归两种方法实现。本质上会发现,两种方法类似

public class Solution {
    /**
     * @param root: The root of the binary search tree.
     * @param node: insert this node into the binary search tree
     * @return: The root of the new binary search tree.
     */
    public TreeNode insertNode(TreeNode root, TreeNode node) {
        if(root == null)
            return node;
            
        if(root.val > node.val)
            root.left = insertNode(root.left, node);
        else
            root.right = insertNode(root.right, node);
        
        return root;
    }
}
/**
 * Definition of TreeNode:
 * public class TreeNode {
 *     public int val;
 *     public TreeNode left, right;
 *     public TreeNode(int val) {
 *         this.val = val;
 *         this.left = this.right = null;
 *     }
 * }
 */
public class Solution {
    /**
     * @param root: The root of the binary search tree.
     * @param node: insert this node into the binary search tree
     * @return: The root of the new binary search tree.
     */
    public TreeNode insertNode(TreeNode root, TreeNode node) {
        // write your code here
        if (root == null) {
            root = node;
            return root;
        }
        TreeNode tmp = root;
        TreeNode last = null;
        while (tmp != null) {
            last = tmp;
            if (tmp.val > node.val) {
                tmp = tmp.left;
            } else {
                tmp = tmp.right;
            }
        }
        if (last != null) {
            if (last.val > node.val) {
                last.left = node;
            } else {
                last.right = node;
            }
        }
        return root; 
    }
}

相关文章

  • 85. 在二叉查找树中插入节点

    85. 在二叉查找树中插入节点 描述 笔记 数据 评测 给定一棵二叉查找树和一个新的树节点,将节点插入到树中。 你...

  • 二叉树 堆 2019-04-17

    二叉树 实现一个二叉查找树,并且支持插入、删除、查找操作 实现查找二叉查找树中某个节点的后继、前驱节点 实现二叉树...

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

    题目 给定一棵二叉查找树和一个新的树节点,将节点插入到树中。你需要保证该树仍然是一棵二叉查找树。 分析 分别用递归...

  • lintcode 在二叉查找树中插入节点

    给定一棵二叉查找树和一个新的树节点,将节点插入到树中。你需要保证该树仍然是一棵二叉查找树。样例给出如下一棵二叉查找...

  • OJ lintcode 在二叉查找树中插入节点

    给定一棵二叉查找树和一个新的树节点,将节点插入到树中。你需要保证该树仍然是一棵二叉查找树。

  • 二叉排序树BST

    二叉排序树/二叉查找树/二叉搜索树BST set和map的实现基础查找 插入 不使用引用C中没有引用对父节点的le...

  • 85. 在二叉查找树中插入节点

    给定一棵二叉查找树和一个新的树节点,将节点插入到树中。 你需要保证该树仍然是一棵二叉查找树。 注意事项 You c...

  • 极客时间数据结构与算法之美笔记24

    二叉查找树(Binary Search Tree) 二叉查找树要求,在树中的任意一个节点,其左子树中的每个节点的值...

  • 算法简记- BST相关

    1、// 给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 ...

  • 第二十四节-二叉树基础(下)

    二叉查找树 二叉查找树又叫二叉搜索树。特点是,在树中任意一个节点,其左子树的每个节点的值,都要小于这个节点的值,而...

网友评论

    本文标题:LintCode 在二叉查找树中插入节点

    本文链接:https://www.haomeiwen.com/subject/zzlzmttx.html