LeetCode-222-完全二叉樹的節(jié)點個數(shù)

完全二叉樹的節(jié)點個數(shù)

題目描述:給你一棵 完全二叉樹 的根節(jié)點 root 榄棵,求出該樹的節(jié)點個數(shù)。

完全二叉樹 的定義如下:在完全二叉樹中潘拱,除了最底層節(jié)點可能沒填滿外疹鳄,其余每層節(jié)點數(shù)都達到最大值,并且最下面一層的節(jié)點都集中在該層最左邊的若干位置芦岂。若最底層為第 h 層瘪弓,則該層包含 1~ 2^{h} 個節(jié)點。

示例說明請見LeetCode官網(wǎng)禽最。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/count-complete-tree-nodes/
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有腺怯。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處川无。

解法一:二叉樹的層序遍歷

對二叉樹層序遍歷呛占,按從上到下、從左到右的順序遍歷二叉樹懦趋,其中利用了隊列先進先出的特點晾虑。具體處理過程如下:

  • 首先如果根節(jié)點為空,即為空樹仅叫,說明沒有節(jié)點帜篇,直接返回0;
  • 否則诫咱,先將根節(jié)點添加到隊列中坠狡,然后遍歷隊列中的節(jié)點,直到隊列為空遂跟,遍歷過程中記錄節(jié)點的數(shù)目逃沿。

最后返回節(jié)點數(shù)婴渡。

import com.kaesar.leetcode.TreeNode;

import java.util.LinkedList;
import java.util.Queue;

public class LeetCode_222 {
    /**
     * 二叉樹層序遍歷
     *
     * @param root
     * @return
     */
    public static int countNodes(TreeNode root) {
        // 如果根節(jié)點為空,即為空樹凯亮,說明沒有節(jié)點边臼,直接返回0
        if (root == null) {
            return 0;
        }
        // 利用隊列先進先出的特性,對二叉樹進行層序遍歷
        Queue<TreeNode> nodes = new LinkedList<>();
        // 首先將根節(jié)點添加到隊列中假消,作為第一層
        nodes.add(root);
        // 記錄二叉樹的節(jié)點數(shù)
        int count = 0;
        // 遍歷隊列中的節(jié)點柠并,直到隊列為空
        while (!nodes.isEmpty()) {
            count++;
            TreeNode cur = nodes.poll();
            if (cur.left != null) {
                nodes.add(cur.left);
            }
            if (cur.right != null) {
                nodes.add(cur.right);
            }
        }
        return count;
    }

    public static void main(String[] args) {
        /**
         * 測試用例:
         *       1
         *    2     3
         *   4 5   6
         */
        TreeNode root = new TreeNode(1);
        root.left = new TreeNode(2);
        root.right = new TreeNode(3);
        root.left.left = new TreeNode(4);
        root.left.right = new TreeNode(5);
        root.right.left = new TreeNode(6);

        // 期望輸出: 6
        System.out.println(countNodes(root));
    }
}

【每日寄語】 大丈夫行事,當(dāng)磊磊落落富拗,如日月皎然臼予。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市啃沪,隨后出現(xiàn)的幾起案子粘拾,更是在濱河造成了極大的恐慌,老刑警劉巖创千,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缰雇,死亡現(xiàn)場離奇詭異,居然都是意外死亡追驴,警方通過查閱死者的電腦和手機械哟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來殿雪,“玉大人暇咆,你說我怎么就攤上這事”铮” “怎么了爸业?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長河泳。 經(jīng)常有香客問我,道長年栓,這世上最難降的妖魔是什么拆挥? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮某抓,結(jié)果婚禮上纸兔,老公的妹妹穿的比我還像新娘。我一直安慰自己否副,他們只是感情好汉矿,可當(dāng)我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著备禀,像睡著了一般洲拇。 火紅的嫁衣襯著肌膚如雪奈揍。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天赋续,我揣著相機與錄音男翰,去河邊找鬼。 笑死纽乱,一個胖子當(dāng)著我的面吹牛蛾绎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鸦列,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼租冠,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了薯嗤?” 一聲冷哼從身側(cè)響起顽爹,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎应民,沒想到半個月后话原,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡诲锹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年繁仁,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片归园。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡黄虱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出庸诱,到底是詐尸還是另有隱情捻浦,我是刑警寧澤阳柔,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布逝薪,位于F島的核電站,受9級特大地震影響攻臀,放射性物質(zhì)發(fā)生泄漏钠四。R本人自食惡果不足惜盗扒,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望缀去。 院中可真熱鬧侣灶,春花似錦、人聲如沸缕碎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咏雌。三九已至凡怎,卻和暖如春校焦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背栅贴。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工斟湃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人檐薯。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓凝赛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親坛缕。 傳聞我的和親對象是個殘疾皇子墓猎,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內(nèi)容