0
点赞
收藏
分享

微信扫一扫

LeetCode Algorithm LCP 44. 开幕式焰火


​​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)


举报

相关推荐

0 条评论