什么是树?
树是n(n>=0)个结点的有限集。n=0时称为空树,在任意一棵非空树中,有且仅有一个特定的称为根(root)的结点, 当n>1时,其余结点可分为m个互不相交的有限集。 下图中第一张图就不是树, 因为d和e相交
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5iY2MDNlNjYhZmMwUTN0QGO2EzNjFDZ0QWO5M2NkJDNi9CX4AzLcBTMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL0M3Lc9CX6MHc0RHaiojIsJye.png)
树的存储结构?
树的存储结构一般有4种,
1)双亲表示法,就是在每个节点中标示出它的父节点
2)孩子表示法,每个节点携带指针位指向自己的孩子
这种方法中,每个节点除了数据域外,还要额外携带m个指针位(m为树的度)
3)双亲孩子表示法
4),孩子兄弟表示法
二叉树?
度<=2的树称为二叉树
二叉树的存储结构?
1)顺序存储
2, 链式存储(使用孩子表示法)
二叉树的遍历?
1)前序遍历(DLR), 规则是:若二叉树为空,则空操作返回,否则先访问根节点,然后前序遍历左子树,再前序遍历右子树
代码实现:
测试代码
输出结果:
2)相对于前序遍历(DLR)来说, 中序遍历(LDR)就是先访问左子树,再访问中间节点,再访问右子树
3)后续遍历(LRD)
输出结果
小结: 所谓前序后序中序其实就是 访问根节点是在访问左右节点的前面、后面还是中间