📅  最后修改于: 2023-12-03 15:42:14.248000             🧑  作者: Mango
有一个二叉树,每个节点有数值和一个标志位。标志位初始值为 false,操作有两种:
请您维护这棵二叉树,并按照题目描述实现以上操作。
我们可以使用递归来实现这个问题。
对于操作 1,我们只需要递归地将该节点的左右子树的标志位都设为 true 即可。
对于操作 2,如果该节点的标志位为 true,则返回 true;否则,递归地判断该节点的左右子树是否有标志位为 true 的节点即可。
需要注意的是,对于每个节点,我们需要同时维护数值和标志位。
以下是使用 Python 语言实现的代码片段:
class TreeNode:
def __init__(self, val):
self.val = val
self.flag = False
self.left = None
self.right = None
class Tree:
def __init__(self, root=None):
self.root = root
def set_flag(self, node):
if node:
node.flag = True
self.set_flag(node.left)
self.set_flag(node.right)
def has_flag(self, node):
if not node:
return False
if node.flag:
return True
return self.has_flag(node.left) or self.has_flag(node.right)
本题考查了递归的使用,也考查了对二叉树的基本操作。需要注意的是,当涉及到递归时,要考虑清楚递归的边界条件,否则容易出现无限递归的错误。