LeetCode Algorithm LCP 44. 开幕式焰火

Posted Alex_996

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)

以上是关于LeetCode Algorithm LCP 44. 开幕式焰火的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode LCP 07. 传递信息

LeetCode LCP 07. 传递信息

leetcode LCP.07 传递信息

leetcode LCP.07 传递信息

LeetCode LCP 06. 拿硬币

算法leetcode|LCP 17. 速算机器人(rust和go)