struct TreeNode* insertIntoBST(struct TreeNode* root, int val){
struct TreeNode* head;
struct TreeNode* pre;
if(root!=NULL){//根节点非空
head=root;//用head暂存根结点的位置
while(root!=NULL){
//遍历寻找该结点应该在的位置root和父结点位置pre
if(root->val>val){
pre=root;
root=root->left;
}
else if(root->val<val){
pre=root;
root=root->right;
}
}
root=(struct TreeNode*)malloc(sizeof(struct TreeNode));//创建结点
root->val=val;
root->left=NULL;
root->right=NULL;
if(pre->val>val)//如果父结点的值大于要插入的值,说明新结点应该在父结点的左子树
pre->left=root;
else if(pre->val<val)//小于则说明应该在右子树
pre->right=root;
root=head;//将root指针重新指向根结点的位置
}
else{//根节点为空,直接创建赋值就行,不用遍历
root=(struct TreeNode*)malloc(sizeof(struct TreeNode));
root->val=val;
root->left=NULL;
root->right=NULL;
}
return root;
}
Leetcode第701题二叉搜索树中的插入操作|C语言
最新推荐文章于 2024-06-12 10:00:23 发布