二叉树
二叉树
概念
二叉树是一种特殊的树,每次分叉不超过两部分。
结构
- 根节点
- 如果一个结点没有子树,那就称为叶子结点。
- 左子树
- 右子树
完美二叉树
如果一个二叉树的高度为h,从第二层开始每层结点树都是上一层的两倍。
- 左子树
2*x(根节点) - 右子树
2*x(根节点)+1
二叉树的遍历
- 前序遍历
概念:首先访问根结点,然后遍历左子树,最后遍历右子树。
代码实现:void pre_order(int x){ cout<<x; if(t[x].l)pre_order(t[x].l); if(t[x].r)pre_order(t[x].r); }
- 中序遍历
概念:首先遍历左子树,然后访问根结点,最后遍历右子树。
代码实现:void order(int x){ if(t[x].l)order(t[x].l); cout<<x; if(t[x].r)order(t[x].r); }
- 后序遍历
概念:首先遍历左子树,然后遍历右子树,最后访问根结点。
代码实现:void order(int x){ if(t[x].l)order(t[x].l); if(t[x].r)order(t[x].r); cout<<x; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?