思路
在二叉搜索树中插入新节点。首先检查树是否为空,若空则直接创建新节点。否则通过遍历树结构,比较节点值大小决定向左或向右子树移动,直到找到合适的空位置插入新节点。时间复杂度为O(h),其中h是树的高度。该实现保持了二叉搜索树的性质,即左子树值小于父节点,右子树值大于父节点。
代码
cpp
class Solution {
public:
TreeNode* insertIntoBST(TreeNode* r, int b) {
TreeNode* a=r;
if(!r) {
r=new TreeNode(b);
}
while(a) {
if(a->val>b) {
if(a->left) {
a=a->left;
}
else {
a->left=new TreeNode(b);
return r;
}
}
else {
if(a->right) {
a=a->right;
}
else {
a->right=new TreeNode(b);
return r;
}
}
}
return r;
}