摘要:二叉樹邊界題意高頻題,必須熟練掌握。逆時針打印二叉樹邊界。解題思路根據觀察,我們發現當為左邊界時,也是左邊界當為左邊界時,為空,則也可以左邊界。先加入左邊,加入,然后得到兩個子樹加入,最后加入右邊界。
LeetCode 545. Boundary of Binary Tree 二叉樹邊界
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].
題意: 高頻題,必須熟練掌握。逆時針打印二叉樹邊界。
解題思路:
根據觀察,我們發現
當node為leftBound左邊界時,node.left也是左邊界
當node為leftBound左邊界時,node.left為空,則node.right也可以leftBound左邊界。
Bottom的所有都要加入其中。
rightBound也是如此。
我們可以循環調用dfs,初始化leftBound和rightBound兩個boolean參數,一層層判斷。先加入左邊,加入bottom,然后得到兩個子樹加入,最后加入右邊界。
代碼如下:
/** * 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 ListboundaryOfBinaryTree(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); } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/71881.html
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...
摘要:在線網站地址我的微信公眾號完整題目列表從年月日起,每天更新一題,順序從易到難,目前已更新個題。這是項目地址歡迎一起交流學習。 這篇文章記錄我練習的 LeetCode 題目,語言 JavaScript。 在線網站:https://cattle.w3fun.com GitHub 地址:https://github.com/swpuLeo/ca...我的微信公眾號: showImg(htt...
LeetCode 104 Maximum Depth of Binary Tree難度:Easy 題目描述:找到一顆二叉樹的最深深度。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 ...
摘要:題意判斷一顆二叉樹是否是平衡二叉樹,平衡二叉樹的定義為,每個節點的左右子樹深度相差小于這是和求最大深度的結合在一起,可以考慮寫個函數找到拿到左右子樹的深度,然后遞歸調用函數判斷左右子樹是否也是平衡的,得到最終的結果。 LeetCode 110 Balanced Binary Tree Given a binary tree, determine if it is height-bala...
摘要:月下半旬攻略道題,目前已攻略題。目前簡單難度攻略已經到題,所以后面會調整自己,在刷算法與數據結構的同時,攻略中等難度的題目。 Create by jsliang on 2019-07-30 16:15:37 Recently revised in 2019-07-30 17:04:20 7 月下半旬攻略 45 道題,目前已攻略 100 題。 一 目錄 不折騰的前端,和咸魚有什么區別...
閱讀 1970·2021-11-23 09:51
閱讀 883·2021-11-19 09:40
閱讀 836·2021-10-27 14:20
閱讀 5028·2021-10-09 09:52
閱讀 3305·2021-10-09 09:44
閱讀 1735·2021-10-08 10:05
閱讀 5095·2021-09-09 11:47
閱讀 3484·2019-08-30 12:47