题目
截图自官方

代码
/**
* 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 {
// 递归的又一经典运用。是在LeetCode450之后做的,熟练运用了返回值
public TreeNode insertIntoBST(TreeNode root, int val) {
if(root==null){
root=new TreeNode(val);
}
if(root.val>val){
root.left=insertIntoBST(root.left,val);
}
if(root.val<val){
root.right=insertIntoBST(root.right,val);
}
return root;
}
// 官方迭代法,空间复杂度依然为o(n),时间复杂度降为了O(1)
// 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;
// }
}
本文介绍了一种使用递归和迭代方法将新值插入到二叉搜索树(BST)中的算法实现。递归方法通过返回值巧妙地更新树的节点,而迭代方法则遵循一种更直观的路径跟踪方式。
2197

被折叠的 条评论
为什么被折叠?



