小红拿到了一棵二叉树。她希望删除尽可能少的节点,使得该二叉树变成一棵满二叉树。你能编写一个函数返回需要删除的节点最小数量吗? 一个二叉树,如果每一个层的节点数都达到最大值,则这个二叉树就是满二叉树。
区块链毕设网qklbishe.com为您提供问题的解答
小红拿到了一棵二叉树。她希望删除尽可能少的节点,使得该二叉树变成一棵满二叉树。你能编写一个函数返回需要删除的节点最小数量吗?
一个二叉树,如果每一个层的节点数都达到最大值,则这个二叉树就是满二叉树。
层序遍历一层,同时计算这一层所有子树的结点和。若出现任意一个左子树或右子树缺失,立刻返回结果。
class Solution(): def dfs(self, root): if not root: return 0 l=self.dfs(root.left) r=self.dfs(root.right) return l+r+1 def numOfNode(self, root): que = [] que.append(root) while len(que)!=0: res = 0 all_have = True for i in range(len(que)): node = que.pop(0) if node.left: res+=self.dfs(node.left) que.append(node.left) else: all_have = False if node.right: res+=self.dfs(node.right) que.append(node.right) else: all_have = False if not all_have: return res return 0
编辑于 2024-03-06 20:28:13
以上就是关于问题小红拿到了一棵二叉树。她希望删除尽可能少的节点,使得该二叉树变成一棵满二叉树。你能编写一个函数返回需要删除的节点最小数量吗? 一个二叉树,如果每一个层的节点数都达到最大值,则这个二叉树就是满二叉树。的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训