数据结构:二叉树

一、概念

        1.线性结构:描述对象一对一的关系(表)

        2.非线性结构:描述数据一对多(树)、多对多(图)

二、树形结构

        1.节点:组成树形结构的一个小的单元称为节点

                1.1根节点:只有后继,没有前驱

                1.2分支节点:既有前驱,又有后继。

                1.3叶子节点:只有前驱,没有后继

        2.前驱(祖先):由那个节点可以访问到该节点

        3.后继(子孙):该节点可以后续访问到哪些节点

        4.层:根节点层数为1,后续每引申出的一个节点就在该节点层数上+1

        5.树的层数:最高的层数

        6.高度:该节点到最远的叶子节点的距离

        7.深度:该节点到根节点的距离

        8.树的深度=树的高度=树的层数

        9.度:后继节点的个数(二叉树)

三、二叉树

        1.树形结构中所有节点度数最大为2,称为二叉树

        2.二叉树节点类型:叶子节点、只有左孩子、只有孩子、左右孩子都有

(一)满二叉树和完全二叉树

        1.满二叉树:所有叶子节点均在同一层,且每层节点个数均为最大值

                1.1满二叉树K层节点有:2^(k-1)

                1.2满二叉树K层节点有:2^k-1

        2.完全二叉树:二叉树的编号(如果节点编号为n,左孩子编号2n,右孩子编号为2n+1),展开后是连续的

(二)完全二叉树的遍历

        1.深度优先遍历(DFS)

                1.1前序遍历(先序遍历):左右(1、2、4、8、9、5、10、11、3、6、12、7)

                1.2中序遍历:左右(8、4、9、2、10、5、11、1、12、6、3、7)

                1.3后序遍历:左右(8、9、4、10、11、5、2、12、6、7、3、1)

        2.广度优先遍历(BFS):层序遍历(1、2、3、4、5、6、7、8、9、10、11、12)

(三)实现遍历

        1.节点定义

        2.创建

        3.深度遍历

        4.广度遍历(利用队列实现)

        5.获得数的高度、深度、层数

       6.创建非完全二叉树(需要通过终端输入实现)

        7.非递归实现(利用栈实现)

非递归后续因为左后打印根节点,所有根节点需要两次入栈

第一次入栈:为了出栈找到该节点的右孩子,找到后继续入栈

第二次入栈:为了打印该节点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值