/**
* 701. 二叉搜索树中的插入操作
* @author wsq
* @date 2020/09/30
给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据保证,新值和原始二叉搜索树中的任意节点值都不同。
注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回任意有效的结果。
例如,
给定二叉搜索树:
4
/ \
2 7
/ \
1 3
和 插入的值: 5
你可以返回这个二叉搜索树:
4
/ \
2 7
/ \ /
1 3 5
链接:https://leetcode-cn.com/problems/insert-into-a-binary-search-tree
*
*/
package com.wsq.tree;
public class InsertIntoBST {
/**
* 两种实现方式,递归和迭代
* @param root
* @param val
* @return
*/
public TreeNode insertIntoBST(TreeNode root, int val) {
if(root == null) {
return new TreeNode(val);
}
// dfs(root, val);
TreeNode tmpNode = root;
while(tmpNode != null) {
if(tmpNode.val > val) {
if(tmpNode.left == null) {
tmpNode.left = new TreeNode(val);
break;
}else {
tmpNode = tmpNode.left;
}
}else {
if(tmpNode.right == null) {
tmpNode.right = new TreeNode(val);
break;
}else {
tmpNode = tmpNode.right;
}
}
}
return root;
}
private void dfs(TreeNode root, int val) {
// TODO Auto-generated method stub
if(root == null) {
return;
}
if(root.val > val) {
if(root.left == null) {
root.left = new TreeNode(val);
}else {
dfs(root.left, val);
}
}else {
if(root.right == null) {
root.right = new TreeNode(val);
}else {
dfs(root.right, val);
}
}
}
}
701. 二叉搜索树中的插入操作
最新推荐文章于 2023-06-03 18:05:20 发布