📌  相关文章
📜  打印节点,其每个相邻树具有相同颜色的所有节点(1)

📅  最后修改于: 2023-12-03 14:54:30.231000             🧑  作者: Mango

打印相邻颜色相同节点

这个问题可以通过深度优先搜索(DFS)来解决。我们从根节点开始遍历整个树,对于每个节点,如果它和它的父节点具有相同的颜色,则将其打印出来,否则我们将其传递给它的子节点。我们需要维护一个前一节点的颜色变量以用于比较。

下面是代码实现:

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right

class Solution:
    def dfs(self, node: TreeNode, prev_color: int, res: List[int]) -> None:
        if not node:
            return
        if node.val == prev_color:
            res.append(node)
        self.dfs(node.left, node.val, res)
        self.dfs(node.right, node.val, res)
        
    def printSameColorNodes(self, root: TreeNode) -> List[int]:
        if not root:
            return []
        res = []
        self.dfs(root, root.val, res)
        return res

这个代码的时间复杂度是O(n),因为我们需要遍历整个树。空间复杂度也是O(n),因为我们需要存储所有符合要求的节点。