遍历二叉树小结
2016-01-20 10:37
127 查看
二叉树将其分为根(B,base),左子树(L,left),右子树(R,right)表示。则遍历树就是遍历B,L和R的过程,对3个组件进行排列,实际有3*2*1=6种。
DLR,LDR,LRD
RLD,RDL,DRL
其本质类似。
默认情况,将L和R的顺序确定下来,先L后R。则只剩下3种常说的,先根,中根,后根。
递归的思路:递归就是自己调用自己,用同样办法解决子问题。
如先根遍历。对于每一个子树,都要先访问根,在递归访问访问左子树(根(根左右),左,右),递归访问右子树。
preorder(root r)
{
if(r==null)//非法情况,同时也是返回条件
return
else
{
print(r)
preorder(r.left)
preorder(r.right)
}
}
中根和后根就是把上面的print放在中间或后面。
层序遍历是利用队列保存每个节点及其左右孩子的。不再赘述。
DLR,LDR,LRD
RLD,RDL,DRL
其本质类似。
默认情况,将L和R的顺序确定下来,先L后R。则只剩下3种常说的,先根,中根,后根。
递归的思路:递归就是自己调用自己,用同样办法解决子问题。
如先根遍历。对于每一个子树,都要先访问根,在递归访问访问左子树(根(根左右),左,右),递归访问右子树。
preorder(root r)
{
if(r==null)//非法情况,同时也是返回条件
return
else
{
print(r)
preorder(r.left)
preorder(r.right)
}
}
中根和后根就是把上面的print放在中间或后面。
层序遍历是利用队列保存每个节点及其左右孩子的。不再赘述。
相关文章推荐
- 终于整理好了,安卓日常开发工具大合集
- vim操作笔记
- 记录一次Quartz2D学习(五)
- Maven如何打包本地依赖包
- TCP拥塞控制
- HDU 1078 FatMouse and Cheese
- CodeIgniter多语言实现方法详解
- webrtc agc
- iOS -字符串替换 富文本的简单使用
- C3p0配置Mysql失效
- (一)、认识 hadoop
- selector状态
- Android47_传感器Sensor
- 细述Web技术与Native App共存的这10年
- 使用System.arraycopy()实现数组之间的复制
- js-RSA加密解密
- Spring注解详解
- Android 利用 aapt 解析 apk 得到应用名称 包名 版本号 权限等信息
- nova cell配置
- pycurl 使用 跳转