LCP 44. 开幕式焰火
Ideas树类型的题目一般都需要用到递归,这道题相对来说比较简单,我们只需要遍历整棵树,然后把节点值记录到一个集合中,最后返回集合的长度就可以了。
所以这道题的考点就是树的遍历,奉上我的二叉树前序遍历模板:
递归版本:
def preorderTraversalRecursion(node): if not node: return print(node.value, end=' ') # 递归序第一次到达 node 的时候 print BinaryTreeNode.preorderTraversalRecursion(node.left) BinaryTreeNode.preorderTraversalRecursion(node.right)
非递归版本:
def preorderTraversalLoop(node): if not node: return stack = [node] # list 模拟 stack while stack: tmp = stack.pop() print(tmp.value, end=' ') if tmp.right: stack.append(tmp.right) if tmp.left: stack.append(tmp.left)
这道题把模板稍微一改就行了。
Code Python# Definition for a binary tree node. class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None class Solution: def numColor(self, root: TreeNode) -> int: def pre_order_traversal(node: TreeNode): if not node: return stack = [node] while stack: item = stack.pop() ans.add(item.val) if item.right: stack.append(item.right) if item.left: stack.append(item.left) ans = set() pre_order_traversal(root) return len(ans)