二叉树
二叉树
概念
二叉树是一种特殊的树,每次分叉不超过两部分。
结构
- 根节点
- 如果一个结点没有子树,那就称为叶子结点。
- 左子树
- 右子树
完美二叉树
如果一个二叉树的高度为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; }