生活随笔
收集整理的這篇文章主要介紹了
LeetCode 1660. 纠正二叉树(BFS)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
1. 題目
你有一棵二叉樹,這棵二叉樹有個小問題,其中有且只有一個無效節(jié)點,它的右子節(jié)點錯誤地指向了與其在同一層且在其右側(cè)的一個其他節(jié)點。
給定一棵這樣的問題二叉樹的根節(jié)點 root ,將該無效節(jié)點及其所有子節(jié)點移除(除被錯誤指向的節(jié)點外),然后返回新二叉樹的根結(jié)點。
自定義測試用例:
測試用例的輸入由三行組成:
TreeNode root
int fromNode (在 correctBinaryTree 中不可見)
int toNode (在 correctBinaryTree 中不可見)
當以 root 為根的二叉樹被解析后,值為 fromNode 的節(jié)點 TreeNode 將其右子節(jié)點指向值為 toNode 的節(jié)點 TreeNode 。
然后, root 傳入 correctBinaryTree 的參數(shù)中。
示例 1:
輸入
: root
= [1,2,3], fromNode
= 2, toNode
= 3
輸出
: [1,null
,3]
解釋
: 值為
2 的節(jié)點是無效的,所以移除之。
示例 2:
輸入
: root
= [8,3,1,7,null
,9,4,2,null
,null
,null
,5,6], fromNode
= 7, toNode
= 4
輸出
: [8,3,1,null
,null
,9,4,null
,null
,5,6]
解釋
: 值為
7 的節(jié)點是無效的,所以移除這個節(jié)點及其子節(jié)點
2。提示
:
樹中節(jié)點個數(shù)的范圍是
[3, 10^4] 。
-10^9 <= Node
.val
<= 10^9
所有的 Node
.val 都是互不相同的。
fromNode
!= toNode
fromNode 和 toNode 將出現(xiàn)在樹中的同一層。
toNode 在 fromNode 的右側(cè)。
fromNode
.right 在測試用例的樹中建立后為 null 。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/correct-a-binary-tree
著作權(quán)歸領扣網(wǎng)絡所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
2. 解題
class Solution {
public:TreeNode
* correctBinaryTree(TreeNode
* root
) {unordered_set
<TreeNode
*> vis
;queue
<tuple
<TreeNode
*,TreeNode
*,int>> q
; q
.push({root
, NULL, 0});TreeNode
* cur
, *parent
;int dir
;bool finish
= false;while(!q
.empty()){int size
= q
.size();while(size
--){tie(cur
, parent
, dir
) = q
.front();q
.pop();if(cur
->left
){q
.push({cur
->left
, cur
, 0});vis
.insert(cur
->left
);}if(cur
->right
){if(vis
.count(cur
->right
)) {if(dir
==0)parent
->left
= NULL;elseparent
->right
= NULL;finish
= true;break;}q
.push({cur
->right
, cur
, 1});vis
.insert(cur
->right
);}}if(finish
) break;}return root
;}
};
116 ms 65.7 MB C++
我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!
總結(jié)
以上是生活随笔為你收集整理的LeetCode 1660. 纠正二叉树(BFS)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。