[LintCode]Insert Interval

来源:互联网 发布:淘宝内裤真人秀图片 编辑:程序博客网 时间:2024/04/28 04:45

[题目] : Given a binary search tree and a new tree node, insert the node into the tree. You should keep the tree still be a valid binary search tree.


Example

Given binary search tree as follow, after Insert node 6, the tree should be:

  2             2 / \           / \1   4   -->   1   4   /             / \   3             3   6

方法一:基本递归算法

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 || node == null) return root == null ? node : root;        if(node.val > root.val && root.right == null) {            root.right = node;        }else if(node.val < root.val && root.left == null) {            root.left = node;        }                if(node.val > root.val) {             insertNode(root.right, node);        }        else if(node.val < root.val) {             insertNode(root.left, node);        }                return root;    }}

方法二: DFS

在当前root左孩子中找到第一个比node小的节点。如果当前位置为空,则当前为插入位置。不为空,则插入位置在当前节点的右孩子上.

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 || node == null) return root == null ? node : root;        TreeNode temp = root;        TreeNode prev = null;        while(true) {            while(temp != null && temp.val > node.val) {                prev = temp;                temp = temp.left;            }            if(temp == null) {                prev.left = node;                return root;            }            if(temp.right == null) {                temp.right = node;                return root;            }            temp = temp.right;        }    }}




0 0
原创粉丝点击