zoukankan      html  css  js  c++  java
  • 30 Day Challenge Day 5 | Leetcode 701. Insert into a Binary Search Tree

    题解

    递归和迭代两种解法。

    递归解法很直接。

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

    迭代的解法:

    插入的方式有很多种,不妨选择最简单的。就选择在叶子节点,那么用二分法找到插入位置,然后区分左右即可。

    class Solution {
    public:
        TreeNode* insertIntoBST(TreeNode* root, int val) {
            if(!root) return new TreeNode(val);
    
            TreeNode* node = root;
            TreeNode* prev = root;
    
            while(node) {
                prev = node;
                if(val > node->val) {
                    node = node->right;
                } else {
                    node = node->left;
                }
            }
    
            if(val > prev->val) {
                prev->right = new TreeNode(val);
            } else {
                prev->left = new TreeNode(val);
            }
    
            return root;       
        }
    };
    
  • 相关阅读:
    Python 的with关键字
    java解析xml
    Java IO & Serialization
    Java动态编译
    爬虫下载City Scape数据
    Pytorch多GPU训练
    可视化利器Visdom
    GLOG使用Demo
    hyperopt自动调参
    [Redis源码阅读]redis持久化
  • 原文地址:https://www.cnblogs.com/casperwin/p/13532948.html
Copyright © 2011-2022 走看看