
LeetCode之N叉树的前序遍历(589)
发布日期:2021-05-07 08:53:18
浏览次数:24
分类:精选文章
本文共 1639 字,大约阅读时间需要 5 分钟。
题目描述:
给定一个 N 叉树,返回其节点值的前序遍历。
例如,给定一个 3叉树 :
知识点回顾:
此题考察树的前序遍历:
前序遍历:根结点、左子树结点、右子树结点
思路: 1.若树为空,则空操作返回 2.否则,访问根结点,按照从左到右的顺序前序遍历根节点的每一颗子树。题解一: 递归法
"""# Definition for a Node.class Node(object): def __init__(self, val=None, children=None): self.val = val self.children = children"""class Solution(object): def preorder(self, root): """ :type root: Node :rtype: List[int] """ result=[] if root is None: return [] result.append(root.val) for node in root.children: result.extend(self.preorder(node)) return result
题解二: 迭代法
使用进栈出栈的方法,由于栈后进先出,因此进栈的顺序与前序遍历的顺序(从左到右)相反即从右到左。
1、如果根结点为空,返回空 2、初始化栈为根结点,建立一个空表result存放结果 3、当栈不为空时,进行以下循环:- 3.1将栈顶元素弹出至当前结点指针p
- 3.2 将p添加到result表里
- 3.3 按照从右到左的顺序将结点的孩子压入栈内。
"""# Definition for a Node.class Node(object): def __init__(self, val=None, children=None): self.val = val self.children = children"""class Solution(object): def preorder(self, root): """ :type root: Node :rtype: List[int] """ if root is None: return [] stack, result = [root, ], [] while stack: root = stack.pop() result.append(root.val) stack.extend(root.children[::-1]) return result
时间复杂度:O(M),其中M为树中结点的总个数。每个结点只会入栈和出栈各一次。
空间复杂度:O(M)
python中的extend和append的相同与区别1.列表可包含任何数据类型的元素,单个列表中的元素无须全为同一类型。
相同:
1、.extend( )
与.append( )
都是向列表的末尾添加元素 2、.extend( )
与.append( )
都仅只可以接收一个参数 区别:
1、.append( )
参数 任意,甚至是tuple,但是添加的元素保留原形式 2、.extend( )
只接受一个列表作为参数,并将该参数的每个元素都添加到原有的列表中。

发表评论
最新留言
感谢大佬
[***.8.128.20]2025年03月31日 02时47分07秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
(九)实现页面底部购物车的样式
2021-05-08
python-day3 for语句完整使用
2021-05-08
基于LabVIEW的入门指南
2021-05-08
weblogic之cve-2015-4852
2021-05-08
Java注释
2021-05-08
C++ 函数重载
2021-05-08
使用mybatis-generator生成底层
2021-05-08
Mybatis【5】-- Mybatis多种增删改查那些你会了么?
2021-05-08
计算输入的一句英文语句中单词数
2021-05-08
lvs+keepalive构建高可用集群
2021-05-08
6 个 Linux 运维典型问题
2021-05-08
取消vim打开文件全是黄色方法
2021-05-08
一个系统部署多个tomcat实例
2021-05-08
HP服务器设置iLO
2021-05-08
从头实现一个WPF条形图
2021-05-08
使用QT实现一个简单的登陆对话框(纯代码实现C++)
2021-05-08
QT :warning LNK4042: 对象被多次指定;已忽略多余的指定
2021-05-08
GLFW 源码 下载-编译-使用/GLAD配置
2021-05-08
针对单个网站的渗透思路
2021-05-08