📌  相关文章
📜  在清空给定二叉树的每一步中需要删除的叶节点数(1)

📅  最后修改于: 2023-12-03 15:23:35.165000             🧑  作者: Mango

在清空给定二叉树的每一步中需要删除的叶节点数

简介

在删除二叉树中的所有节点时,需要先清空所有叶节点。而在每一次清空叶节点的过程中,需要计算出当前需要删除的叶节点数。本文将介绍如何在清空给定二叉树的每一步中计算需要删除的叶节点数。

实现思路

采用深度优先遍历的方式,遍历二叉树的每一个叶子节点,然后删除该节点。遍历过程中,记录当前需要删除的叶节点数,并在遍历结束后返回该值。

代码示例
class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

class Solution:
    def countNodeToDelete(self, root: TreeNode) -> int:
        if not root:
            return 0
        if not root.left and not root.right:
            return 1
        left_count = self.countNodeToDelete(root.left)
        right_count = self.countNodeToDelete(root.right)
        count = left_count + right_count
        return count
使用方法

调用 countNodeToDelete 函数即可计算出需要删除的叶节点数。示例代码如下:

root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.left.right = TreeNode(5)
root.right.left = TreeNode(6)
root.right.right = TreeNode(7)

solution = Solution()
count = solution.countNodeToDelete(root)
print(count)

输出结果为:4。

总结

本文介绍了如何在清空给定二叉树的每一步中计算需要删除的叶节点数。通过采用深度优先遍历的方式,遍历二叉树的每一个叶子节点,记录当前需要删除的叶节点数。在遍历结束后,返回该值即可。