题目链接:
大概思路:
题目要求:
给二叉搜索树和一个值,把值符合搜索树规则的插入到二叉搜索树中去。
思路:
自己思路:按给定的插入值,在搜索树里搜索他,因为插入值实际在搜索树里并不存在,所以遇见空值后(终止条件),添加插入值在空值节点上。
学后自己理解的思路:差不多
递归三部曲:
1.确定递归函数参数和返回类型:
TreeNode* insertIntoBST(TreeNode* root, int val)
2.明确终止条件:
遇见空值,进行添加插入值的操作,在这一步做的是新建节点和返还值,在递归单层逻辑那,添加插入节点上去。
if (root == NULL) {
TreeNode* node = new TreeNode(val);
return node;
}
3.确定递归单层逻辑:
递归搜索树搜索的逻辑,以及接住终止条件返回值和添加插入节点到树上去。
if (root->val > val) root->left = insertIntoBST(root->left, val);
if (root->val < val) root->right = insertIntoBST(root->right, val);
return root;
4.总代码:
class Solution {
public:
TreeNode* insertIntoBST(TreeNode* root, int val) {
if (root == NULL) {
TreeNode* node = new TreeNode(val);
return node;
}
if (root->val > val) root->left = insertIntoBST(root->left, val);
if (root->val < val) root->right = insertIntoBST(root->right, val);
return root;
}
};
个人想法:
感觉我一直在学思路,但自己好像很少想过该怎么写,这不太好。不过一开始也想不出什么思路,都是学的多了,才有思路的,这样的话到也还行。