二叉搜索树中的插入操作
思路:
- 判断要插入的二叉树是否为空
- 比较插入值和根节点的大小关系
- 改变当前所比较节点的位置,继续比较
1.代码(Java)
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public TreeNode insertIntoBST(TreeNode root, int val) {
if(root==null){
return new TreeNode(val);
}
TreeNode pos = root;
while(pos!=null){
if(val<=pos.val){
if(pos.left==null){
pos.left=new TreeNode(val);
break;
}else{
pos=pos.left;
}
}else{
if(pos.right==null){
pos.right=new TreeNode(val);
break;
}else{
pos=pos.right;
}
}
}
return root;
}
}
2.代码(python)
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution(object):
def insertIntoBST(self, root, val):
"""
:type root: TreeNode
:type val: int
:rtype: TreeNode
"""
if not root:
return TreeNode(val)
pos=root
while pos:
if val<pos.val:
if not pos.left:
pos.left=TreeNode(val)
break
else:
pos=pos.left
else:
if not pos.right:
pos.right=TreeNode(val)
break
else:
pos=pos.right
return root