LeetCode Algorithm LCP 44. 开幕式焰火
Posted Alex_996
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Algorithm 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)
以上是关于LeetCode Algorithm LCP 44. 开幕式焰火的主要内容,如果未能解决你的问题,请参考以下文章