6.22二叉搜索树中的插入操作(LC701-M)
2023-12-13 08:18:06
算法:
在二叉搜索树种插入任意一个节点,都可以在叶子节点找到其可以插入的位置。
调试过程:
原因:
TreeNode node = new TreeNode(node.val = val);
在尝试创建新的?`TreeNode
`?时,使用了一个未初始化的变量?`node
`。
可以简单地创建一个新的?`TreeNode
`,并将其值设置为?`val
`。
修改后:
原因:新节点没有成功插入。
我没有正确递归创建左右子树。
而且,比较时应该将val和root.val比较。
正确代码:
/**
* 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) {
TreeNode node = new TreeNode(val);
return node;
}
//若val小于root.val,则将Node插在root这个节点的左边
if (val < root.val) root.left=insertIntoBST(root.left, val);
//若val大于root.val,则将Node插在root这个节点的左边
if (val > root.val) root.right=insertIntoBST(root.right, val);
//最终返回新树的root
return root;
}
}
时间空间复杂度:
时间复杂度:
O(N),其中 N 为树中节点的数目。最坏情况下,我们需要将值插入到树的最深的叶子结点上,而叶子节点最深为 O(N)。
空间复杂度:
O(1)。我们只使用了常数大小的空间。
文章来源:https://blog.csdn.net/m0_50696252/article/details/134952028
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!