国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

LeetCode 545. Boundary of Binary Tree 二叉樹(shù)邊界

Astrian / 1690人閱讀

摘要:二叉樹(shù)邊界題意高頻題,必須熟練掌握。逆時(shí)針打印二叉樹(shù)邊界。解題思路根據(jù)觀察,我們發(fā)現(xiàn)當(dāng)為左邊界時(shí),也是左邊界當(dāng)為左邊界時(shí),為空,則也可以左邊界。先加入左邊,加入,然后得到兩個(gè)子樹(shù)加入,最后加入右邊界。

LeetCode 545. Boundary of Binary Tree 二叉樹(shù)邊界
Given a binary tree, return the values of its boundary in anti-clockwise direction starting from root. Boundary includes left boundary, leaves, and right boundary in order without duplicate nodes.

Left boundary is defined as the path from root to the left-most node. Right boundary is defined as the path from root to the right-most node. If the root doesn"t have left subtree or right subtree, then the root itself is left boundary or right boundary. Note this definition only applies to the input binary tree, and not applies to any subtrees.

The left-most node is defined as a leaf node you could reach when you always firstly travel to the left subtree if exists. If not, travel to the right subtree. Repeat until you reach a leaf node.

The right-most node is also defined by the same way with left and right exchanged.

Example 1
Input:

  1
   
    2
   / 
  3   4

Ouput:
[1, 3, 4, 2]

Explanation:
The root doesn"t have left subtree, so the root itself is left boundary.
The leaves are node 3 and 4.
The right boundary are node 1,2,4. Note the anti-clockwise direction means you should output reversed right boundary.
So order them in anti-clockwise without duplicates and we have [1,3,4,2].

Example 2

Input:

    ____1_____
   /          
  2            3
 /           / 
4   5        6   
   /       / 
  7   8    9  10  

Ouput:
[1,2,4,7,8,9,10,6,3]

Explanation:
The left boundary are node 1,2,4. (4 is the left-most node according to definition)
The leaves are node 4,7,8,9,10.
The right boundary are node 1,3,6,10. (10 is the right-most node).
So order them in anti-clockwise without duplicate nodes we have [1,2,4,7,8,9,10,6,3].

題意: 高頻題,必須熟練掌握。逆時(shí)針打印二叉樹(shù)邊界。

解題思路:
根據(jù)觀察,我們發(fā)現(xiàn)

當(dāng)node為leftBound左邊界時(shí),node.left也是左邊界

當(dāng)node為leftBound左邊界時(shí),node.left為空,則node.right也可以leftBound左邊界。

Bottom的所有都要加入其中。

rightBound也是如此。

我們可以循環(huán)調(diào)用dfs,初始化leftBound和rightBound兩個(gè)boolean參數(shù),一層層判斷。先加入左邊,加入bottom,然后得到兩個(gè)子樹(shù)加入,最后加入右邊界。

代碼如下:

/**
    * node.left is left bound if node is left bound;
    * node.right could also be left bound if node is left bound && node has no left child;
    * Same applys for right bound;
    * if node is left bound, add it before 2 child - pre order;
    * if node is right bound, add it after 2 child - post order;
    * A leaf node that is neither left or right bound belongs to the bottom line;
    */
    public List boundaryOfBinaryTree(TreeNode root) {
        List res = new ArrayList<>();
        if (root == null) return res;
        res.add(root.val);
        getBounds(root.left, res, true, false);
        getBounds(root.right, res, false, true);
        return res;
    }
    public void getBounds(TreeNode node, List res, boolean leftBound, boolean rightBound) {
        if (node == null) return;
        if (leftBound) {
            res.add(node.val);
        }
        //add bottom
        if(!leftBound && !rightBound && node.left == null && node.right == null) {
            res.add(node.val);
        }
        getBounds(node.left, res, leftBound, rightBound && node.right == null);
        getBounds(node.right, res, leftBound && node.left == null, rightBound);
        if (rightBound) {
            res.add(node.val);
        }
        
        
    }

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/71881.html

相關(guān)文章

  • [LeetCode] 545. Boundary of Binary Tree

    Problem Given a binary tree, return the values of its boundary in anti-clockwise direction starting from root. Boundary includes left boundary, leaves, and right boundary in order without duplicate no...

    newtrek 評(píng)論0 收藏0
  • 前端 | 每天一個(gè) LeetCode

    摘要:在線網(wǎng)站地址我的微信公眾號(hào)完整題目列表從年月日起,每天更新一題,順序從易到難,目前已更新個(gè)題。這是項(xiàng)目地址歡迎一起交流學(xué)習(xí)。 這篇文章記錄我練習(xí)的 LeetCode 題目,語(yǔ)言 JavaScript。 在線網(wǎng)站:https://cattle.w3fun.com GitHub 地址:https://github.com/swpuLeo/ca...我的微信公眾號(hào): showImg(htt...

    張漢慶 評(píng)論0 收藏0
  • LeetCode 104 Maximum Depth of Binary Tree 叉樹(shù)最大深度

    LeetCode 104 Maximum Depth of Binary Tree難度:Easy 題目描述:找到一顆二叉樹(shù)的最深深度。Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the longest path from the root node down ...

    PiscesYE 評(píng)論0 收藏0
  • LeetCode 110 Balanced Binary Tree 平衡叉樹(shù)

    摘要:題意判斷一顆二叉樹(shù)是否是平衡二叉樹(shù),平衡二叉樹(shù)的定義為,每個(gè)節(jié)點(diǎn)的左右子樹(shù)深度相差小于這是和求最大深度的結(jié)合在一起,可以考慮寫(xiě)個(gè)函數(shù)找到拿到左右子樹(shù)的深度,然后遞歸調(diào)用函數(shù)判斷左右子樹(shù)是否也是平衡的,得到最終的結(jié)果。 LeetCode 110 Balanced Binary Tree Given a binary tree, determine if it is height-bala...

    anquan 評(píng)論0 收藏0
  • LeetCode 攻略 - 2019 年 7 月下半月匯總(100 題攻略)

    摘要:月下半旬攻略道題,目前已攻略題。目前簡(jiǎn)單難度攻略已經(jīng)到題,所以后面會(huì)調(diào)整自己,在刷算法與數(shù)據(jù)結(jié)構(gòu)的同時(shí),攻略中等難度的題目。 Create by jsliang on 2019-07-30 16:15:37 Recently revised in 2019-07-30 17:04:20 7 月下半旬攻略 45 道題,目前已攻略 100 題。 一 目錄 不折騰的前端,和咸魚(yú)有什么區(qū)別...

    tain335 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<