@二叉树总结
二叉树阶段性总结
从今天开始记录每天的学习生活了,之前不怎么写博客,对Markdown语法虽然学了一些但是依旧不是很熟悉,力扣的题目都是通过pycharm来记录的,以后通过这种形式,记录一下,记录各种学习,做算法题,做项目的日常
二叉树的遍历
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、基于深度优先遍历方式的三种遍历
二叉树的定义:
代码如下(示例):
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
1.前序遍历(根->左->右)
递归方式好写,但是迭代方式可以参考以下思路,这是目前我认为比较好理解和记住的方式。
思路:
- 利用栈后进先出的特性
- 入栈顺序是左右根
- 出栈顺序就是根左右
代码如下(示例):
# 递归方式
def preorderTraversal1(self, root: TreeNode) -> List[int]:
# 基于根左右的方式就行递归添加节点值
def dfs(root: TreeNode):
if not root:
return []
res.append(root.val)
dfs(root.left)
dfs(root.right)
res = []
dfs(root)
return res
# 迭代方式
def preorderTraversal2(self