給定二叉樹根結點root
,此外樹的每個結點的值要麼是 0,要麼是 1。
返回移除了所有不包含 1 的子樹的原二叉樹。
( 節點 x 的子樹為 x 本身,以及所有 x 的後代。)
示例1:輸入: [1,null,0,0,1]
輸出: [1,null,0,null,1]
解釋:
只有紅色節點滿足條件「所有不包含 1 的子樹」。
右圖為返回的答案。
示例2:輸入: [1,0,1,0,0,0,1]
輸出: [1,null,1,null,1]
示例3:輸入: [1,1,0,1,1,0,1,0]
輸出: [1,1,0,1,1,null,1]
說明:看了三個示例,才搞清楚這個題的意思,是把所有為0的葉子節點或所有節點為0的子樹設為null即可。
根據說明給出的數值範圍,可知演算法的複雜度不會低。
對二叉樹進行搜尋,無非dfs、bfs兩種方式,此處最好的方式是採用dfs。我覺得這道題的關鍵點是在對節點設為null的過程中,可能會由於引用的問題,導致樹的修改失敗。
舉個例子:
public treenode prunetreecore(treenode root)這樣子並不是在原先的樹上進行修改,而只是將實參指向了null。prunetreecore(root.left);
prunetreecore(root.right);
if(root==條件)
root==null
}
所以,我們在遞迴的過程中對樹進行實時的構建是什麼重要的,以保證樹的節點進行了修改。
這道題的演算法邏輯很清晰,此處就不放置流程圖了。
/*** definition for a binary tree node.
* public class treenode
* }*/class solution
public treenode prunetreecore(treenode root)
}
LeetCode 二叉樹剪枝(遞迴)
給定二叉樹根結點 root 此外樹的每個結點的值要麼是 0,要麼是 1。返回移除了所有不包含 1 的子樹的原二叉樹。節點 x 的子樹為 x 本身,以及所有 x 的後代。示例1 輸入 1,null,0,0,1 輸出 1,null,0,null,1 解釋 只有紅色節點滿足條件 所有不包含 1 的子樹 右...
(二叉樹)15 二叉樹剪枝
給定二叉樹根結點 root 此外樹的每個結點的值要麼是 0,要麼是 1。返回移除了所有不包含 1 的子樹的原二叉樹。節點 x 的子樹為 x 本身,以及所有 x 的後代。示例1 輸入 1,null,0,0,1 輸出 1,null,0,null,1 解釋 只有紅色節點滿足條件 所有不包含 1 的子樹 右...
Leetcode 814 二叉樹剪枝
time 20190906 type medium 給定二叉樹根結點 root 此外樹的每個結點的值要麼是 0,要麼是 1。返回移除了所有不包含 1 的子樹的原二叉樹。節點 x 的子樹為 x 本身,以及所有 x 的後代。示例1 輸入 1,null,0,0,1 輸出 1,null,0,null,1 解...