【LeetCode】LeetCode 701.二叉搜索树中的插入操作

LeetCode 701.二叉搜索树中的插入操作

题目链接:https://leetcode.cn/problems/insert-into-a-binary-search-tree/

题目

【LeetCode】LeetCode 701.二叉搜索树中的插入操作_第1张图片

【LeetCode】LeetCode 701.二叉搜索树中的插入操作_第2张图片

解答

递归法

​ 通过递归函数的返回值完成父子节点的赋值是非常方便的

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;
    }
};

迭代法

class Solution {
public:
    TreeNode* insertIntoBST(TreeNode* root, int val) {
        if (root == NULL) {
            TreeNode* node = new TreeNode(val);
            return node;
        }
        TreeNode* cur = root;
        TreeNode* parent = root;
        while (cur != NULL) {
            parent = cur;
            if(cur->val > val)  cur = cur->left;
            else    cur = cur->right;
        }
        TreeNode* node = new TreeNode(val);
        if(val < parent->val)   parent->left = node;
        else    parent->right = node;
        
        return root;
    }
};

你可能感兴趣的:(#,二叉树专题,leetcode,算法,职场和发展)