自己做题时在递归上花费过多时间,最后发现如果插入是二叉树中的最大值时无法解决,方法:从头节点开始与要插入的数据进行对比,若大于节点则进入节点的右子树进行比较,若小于则进入左子树进行比较
问题:对二叉搜索树的定义不够了解,以节点为轴,两边分别为大于节点和小于节点的区域,总能对所给的数据进行尾插
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/class Solution {public:TreeNode* insertIntoBST(TreeNode* root, int val) {if(root==nullptr){return root=new TreeNode(val);}TreeNode* temp=root;while(temp){if(temp->val>val){if(temp->left==nullptr){temp->left=new TreeNode(val);break;}else{temp=temp->left;}}if(temp->val<val){if(temp->right==nullptr){temp->right=new TreeNode(val);break;}else{temp=temp->right;}}}return root;}};
