数据结构-栈、队列、链表、二叉树

栈:先进后出,后进先出。也可以边存边取。

 

队列:

 

链表:

 

二叉数:

二叉数的几种分类:

节点的度:节点的子树的个数。

叶节点:度为0的节点

树的度:指树存在的所有节点中节点度的最大的度数

        斜二叉数:完全往一边倒的链式结构

       完美二叉数:除了最底层的节点以外,每个节点应该有两个子节点。

       完全二叉数:如果节点的编号是自上而下,自左而右排列的话,只要某个二叉数节点的编号和完美二叉数的节点的编号完全对的上,就可以称这个二叉数为节点二叉数。

       与完美二叉数的区别为,完全二叉数最后一层的节点可以是不完全的,缺少的节点应该是从右往左缺,使得留下来的节点编号依然和完美二叉数能一一对应。

二叉树的几个重要的性质:

     1. 一个二叉树第i层的最大节点数为 2的(i-1)次方

      2. 深度为k的二叉树有最大节点总数为 2的k方-1    等比数列求和

    3.  若n0 表示叶节点的个数 则 n0=n2+1  证明: 从树下往上看  每个节点节点都有一个小条路,根节点没有(介于两个节点之间的线称为路)总数为n0+n1+n2-1,   从树上往下看,总数 为2n2 + 1 n1 +0 n0  ,两式相等,化简所得。

二叉树的遍历

1. 先序遍历:根,左,右

2. 中序遍历:左,根,右

2.后序遍历:右,根,左

 

中序遍历非递归遍历算法:

1. 遇到一个节点,将它押送进栈,接着遍历它的左子树。

2. 重复1 直到左子树不存在,弹出栈顶的节点,并按照1 的方法访问它的右子树。

 

层序遍历:

利用队列的思想,依次访问高层次,再访问次层次。队的特性是2端修改,一端加,一段减。

1. 访问根节点,将左右子节点进队。

2.队最左边出,将此出队的节点的左右子节点入队。

重复1.2

 

posted @ 2021-05-17 13:52  初出茅庐的菜鸡  阅读(257)  评论(0)    收藏  举报