代码随想录算法训练营day14|二叉树理论基础、递归遍历(144 145 94)、迭代遍历、统一迭代

理论基础

种类

1.满二叉树

2.完全二叉树:除了底层都是满的,但底部从左到右连续的

3.二叉搜索树:对节点布局没要求,顺序有要求

4.平衡二叉树:左右子树高度的绝对值不能大于1

5.平衡二叉搜索树:同时满足平衡二叉树和二叉搜索树的要求。

map set multimap multiset底层都是这个。

存储方式

1.链式存储

2.线性存储 

顺序存储:2*i+1/2*i+2 左/右孩子

二叉树一般都采用链式存储,可以当作链表来处理。

二叉树遍历

1.深度优先搜索:前中后序遍历,一般递归实现,也可以使用迭代法

2.广度优先搜索:层序遍历(用队列实现对二叉树的遍历)迭代法

二叉树的定义

:一定要注意,确保可以手写出来,leetcode已经帮我们封装好了,但实际开发并不是如此

定义过程中可以考虑构造函数(赋值val等等)

 递归遍历

144 145 94 

1.确定递归函数的参数和返回值;

2. 确定终止条件;

3.确定单层递归的逻辑;

 迭代遍历

迭代模拟递归也用栈来实现:注意进栈顺序为中右左(前序 )

前序:中左右->中右左->翻转二叉树->左右中(后序遍历)

中序遍历

此时遍历顺序和处理顺序不一样

  

统一迭代法

迭代问题:

说使用栈的话,无法同时解决访问节点(遍历节点)和处理节点(将元素放进结果集)不一致的情况

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值