自己做题时在递归上花费过多时间,最后发现如果插入是二叉树中的最大值时无法解决,方法:从头节点开始与要插入的数据进行对比,若大于节点则进入节点的右子树进行比较,若小于则进入左子树进行比较
    问题:对二叉搜索树的定义不够了解,以节点为轴,两边分别为大于节点和小于节点的区域,总能对所给的数据进行尾插

    1. /**
    2. * Definition for a binary tree node.
    3. * struct TreeNode {
    4. * int val;
    5. * TreeNode *left;
    6. * TreeNode *right;
    7. * TreeNode() : val(0), left(nullptr), right(nullptr) {}
    8. * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
    9. * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
    10. * };
    11. */
    12. class Solution {
    13. public:
    14. TreeNode* insertIntoBST(TreeNode* root, int val) {
    15. if(root==nullptr){
    16. return root=new TreeNode(val);
    17. }
    18. TreeNode* temp=root;
    19. while(temp){
    20. if(temp->val>val){
    21. if(temp->left==nullptr){
    22. temp->left=new TreeNode(val);
    23. break;
    24. }
    25. else{
    26. temp=temp->left;
    27. }
    28. }
    29. if(temp->val<val){
    30. if(temp->right==nullptr){
    31. temp->right=new TreeNode(val);
    32. break;
    33. }
    34. else{
    35. temp=temp->right;
    36. }
    37. }
    38. }
    39. return root;
    40. }
    41. };