[LintCode:在二叉查找树中插入节点](http://www.lintcode.com/zh-cn/problem/insert-node-in-a-binary-search-tree/)
Python
"""
Definition of TreeNode:
class TreeNode:
def __init__(self, val):
self.val = val
self.left, self.right = None, None
"""
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.
"""
def insertNode(self, root, node):
if root == None:
return node
self.pre_order(root, node)
return root
def pre_order(self, root, node):
if node.val > root.val:
if root.right == None:
root.right = node
return
self.pre_order(root.right, node)
else:
if root.left == None:
root.left = node
return
self.pre_order(root.left, node)
Java
/**
* 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) {
if (root == null){
return node;
}
preOrder(root, node);
return root;
}
private static void preOrder(TreeNode root, TreeNode node){
if(node.val > root.val){
if (root.right == null){
root.right = node;
return;
}
preOrder(root.right, node);
}
else{
if (root.left == null){
root.left = node;
return;
}
preOrder(root.left, node);
}
}
}