有一棵有
个节点的二叉树,其根节点为
。修剪规则如下:
1.修剪掉当前二叉树的叶子节点,但是不能直接删除叶子节点
2.只能修剪叶子节点的父节点,修剪了父节点之后,叶子节点也会对应删掉
3.如果想在留下尽可能多的节点前提下,修剪掉所有的叶子节点。请你返回修剪后的二叉树。
有如下二叉树:
o / \ o o / \ / \ o o o o
修剪过后仅会留下根节点。
o / \ o o / \ / \ o o o o
{1,1,1,1,1,1,1}
{1}
叶子节点为最下面的4个1节点,但是不能直接修剪,只能修剪中间的2个1,修剪掉之后,只有根节点了
{1,#,1,#,1,#,1,#,1}
{1,#,1,#,1}
退化为一条链了,将最后两个节点删除。
,删除根节点时返回为空。
class Solution(): def findpath(self, node): if node is None: return None if node.left is None and node.right is not None: if node.right.left is None and node.right.right is None: return if node.right is None and node.left is not None: if node.left.left is None and node.left.right is None: return if node.left is not None and node.right is not None: if (node.left.left is None and node.left.right is None)&nbs***bsp;(node.right.left is None and node.right.right is None): return root = TreeNode(node.val) root.left = self.findpath(node.left) root.right = self.findpath(node.right) return root