亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

938-二叉搜索樹的范圍和

LiveVideoStack / 2658人閱讀

摘要:前言的第二題二叉搜索樹的范圍和給定二叉搜索樹的根結(jié)點,返回和含之間的所有結(jié)點的值的和。二叉搜索樹保證具有唯一的值。實現(xiàn)代碼二叉搜索樹的范圍和中序遍歷遞歸

前言

Weekly Contest 110的第二題 二叉搜索樹的范圍和:

給定二叉搜索樹的根結(jié)點 root,返回 LR(含)之間的所有結(jié)點的值的和。

二叉搜索樹保證具有唯一的值。

返回日志的最終順序

示例1:

輸入:root = [10,5,15,3,7,null,18], L = 7, R = 15
輸出:32

示例2:

輸入:root = [10,5,15,3,7,13,18,1,null,6], L = 6, R = 10
輸出:23

提示:

樹中的結(jié)點數(shù)量最多為 10000 個。

最終的答案保證小于 2^31。

解題思路

本題我選擇了一個笨方法去完成,就是利用二叉搜索樹的一個特性:通過中序遍歷二叉搜索樹后可以得到一個遞增的有序序列。所以我選擇了中序遍歷二叉搜索樹獲得遞增且有序的數(shù)組,然后遍歷數(shù)組獲取需要的數(shù)組元素進行累加。

實現(xiàn)代碼
    /**
     * 938. 二叉搜索樹的范圍和
     * @param root
     * @param L
     * @param R
     * @return
     */
    public int rangeSumBST(TreeNode root, int L, int R) {
        List list=new ArrayList();
        int result=0;
        if(root!=null){
            inorderTraversal(root,list);
        }
        for(int i:list){
            if(i>=L && i<=R){
                result+=i;
            }
        }
        return result;
    }

    /**
     * 中序遍歷(遞歸)
     * @param root
     * @param list
     */
    private void inorderTraversal(TreeNode root,List list){
        if(root.left==null && root.right==null){
            list.add(root.val);
        }else if(root.left==null && root.right!=null){
            list.add(root.val);
            inorderTraversal(root.right,list);
        }else if(root.left!=null && root.right==null){
            inorderTraversal(root.left,list);
            list.add(root.val);
        }else{
            inorderTraversal(root.left,list);
            list.add(root.val);
            inorderTraversal(root.right,list);
        }
    }

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/72118.html

相關(guān)文章

  • 【手把手帶你刷LeetCode】——11.二叉搜索樹的范圍(DFS)

    摘要:大家簡單看一下純遞歸的解法原題二叉搜索樹的范圍和解法題目描述給定二叉搜索樹的根結(jié)點,返回值位于范圍之間的所有結(jié)點的值的和。 【前言】 今天是力扣打卡第11天! 感謝鐵汁們的陪伴,一起加油鴨??! 在第9天的時候?qū)戇^這道題的遞歸解題方法,其實DFS使用的解題思想就是遞歸,所以大同小異啦...

    HelKyle 評論0 收藏0
  • 學習數(shù)據(jù)結(jié)構(gòu)與算法之二叉搜索

    摘要:二叉搜索樹是二叉樹的一種,其特征是左側(cè)子節(jié)點存儲比父節(jié)點小的值,右側(cè)子節(jié)點存儲比父節(jié)點大或等于父節(jié)點的值。實現(xiàn)和這個兩個方法其實挺簡單的,最小的節(jié)點就在二叉搜索樹的最左反之,最大的就在最右。 本系列所有文章:第一篇文章:學習數(shù)據(jù)結(jié)構(gòu)與算法之棧與隊列第二篇文章:學習數(shù)據(jù)結(jié)構(gòu)與算法之鏈表第三篇文章:學習數(shù)據(jù)結(jié)構(gòu)與算法之集合第四篇文章:學習數(shù)據(jù)結(jié)構(gòu)與算法之字典和散列表第五篇文章:學習數(shù)據(jù)結(jié)構(gòu)...

    denson 評論0 收藏0
  • 數(shù)據(jù)結(jié)構(gòu)——樹

    摘要:首先,我們了解一下關(guān)于樹的基本知識每一個樹都包含一系列的父子關(guān)系的節(jié)點,每個節(jié)點都有一個父節(jié)點和若干的子節(jié)點零個或者多個沒有父節(jié)點的節(jié)點稱作是根節(jié)點一個節(jié)點可以有祖先和后代,子樹由節(jié)點和他的后代構(gòu)成,節(jié)點的一個屬性是深度深度就是一個節(jié)點祖先 首先,我們了解一下關(guān)于樹的基本知識: 每一個樹都包含一系列的父子關(guān)系的節(jié)點,每個節(jié)點都有一個父節(jié)點和若干的子節(jié)點(零個 或者 多個) 沒有父節(jié)點...

    Backache 評論0 收藏0
  • Python數(shù)據(jù)結(jié)構(gòu)——AVL樹的基本概念

    摘要:我們知道,當樹變得不平衡時和操作會使二叉搜索樹的性能降低到。樹實現(xiàn)抽象數(shù)據(jù)類型就像一個普通的二叉搜索樹,唯一不同的是這棵樹的工作方式。我們通過比較每個節(jié)點的左右子樹的高度完成比較。 平衡二叉搜索樹 在上一節(jié)中我們討論了建立一個二叉搜索樹。我們知道,當樹變得不平衡時get和put操作會使二叉搜索樹的性能降低到O(n)。在這一節(jié)中我們將看到一種特殊的二叉搜索樹,它可以自動進行調(diào)整,以確保樹...

    jiekechoo 評論0 收藏0
  • 數(shù)據(jù)結(jié)構(gòu)與算法JavaScript (不定時更新)

    摘要:每個列表中的數(shù)據(jù)項稱為元素。棧被稱為一種后入先出,的數(shù)據(jù)結(jié)構(gòu)。散列使用的數(shù)據(jù)結(jié)構(gòu)叫做散列表。不包含任何成員的集合稱為空集,全集則是包含一切可能成員的集合。因此二叉搜索樹需要平衡,即左右子樹高度要相近。 樓樓非計算機專業(yè),但是對計算機也還算喜歡。個人理解若有偏差,歡迎各位批評指正! 對于數(shù)據(jù)結(jié)構(gòu)和算法一直是我的薄弱環(huán)節(jié),相信大多數(shù)前端工程師可能多少會有些這方面的弱點,加上數(shù)據(jù)結(jié)構(gòu)和算法本...

    levius 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<