资源简介 (共47张PPT)用抽象数据类型表示二叉树信息技术选择性必修1 | 数据与数据结构 | 第四章第三节课前回顾数 组链 表查 找插 入删 除√×√×3 二叉树的抽象数据类型1 树4 二叉树的基本操作方法2 二叉树目录1树Part one树形结构树形结构1351072911864121314树的定义:n(n>=0)个结点的有限集合结点数n>0时——有且仅有一个根结点 + m个互不相交的有限结点集(m棵子树,m>=0)结点数n=0时——空树2二叉树Part two二叉树定义树……二叉树二叉树定义:结点度数不超过2的树;每个节点的左子树的根节点被称为左孩子,右子树的根节点被称为右孩子。特殊的二叉树1. 满二叉树:一颗高度为h,且含有2h-1个结点的二叉树为满二叉树。1234576特殊的二叉树2. 完全二叉树:假设一个高度为h、有n个结点的二叉树,当且仅当其每个结点都与高度为h的满二叉树中编号1~n的结点一一对应时,称为完全二叉树。1234561234576特殊的二叉树2. 完全二叉树:假设一个高度为h、有n个结点的二叉树,当且仅当其每个结点都与高度为h的满二叉树中编号1~n的结点一一对应时,称为完全二叉树。1234576123456二叉树的存储结构1. 顺序存储:用一组连续的存储单元依次自上而下、自左而右存储完全二叉树上的结点元素。1234561 2 3 4 5 6数组012345二叉树的存储结构1. 顺序存储:用一组连续的存储单元依次自上而下、自左而右存储完全二叉树上的结点元素。1234561 2 3 4 5 6数组0123456二叉树的存储结构顺序存储弊端:1231 2 3数组0123456空间利用率不高,比较适合完全二叉树。二叉树的存储结构2. 链式存储:用链表来存放一棵二叉树,二叉树中每个结点用链表的一个链结点来存储。data nextlchild data rchild二叉树的存储结构2. 链式存储:用链表来存放一棵二叉树,二叉树中每个结点用链表的一个链结点来存储。lchild data rchildtypedef struct BiNode{TElemType data;struct BiNode *lchild,*rchild;//左右孩子指针}BiNode,*BiTree;二叉树的存储结构2. 链式存储:用链表来存放一棵二叉树,二叉树中每个结点用链表的一个链结点来存储。123456123456小结3二叉树的抽象数据类型Part three参考定义ADT 二叉树{数据:采用任何一种方式存储二叉树,其存储类型用BinTreeType标识符表示,该类型的一个二叉树用BT标识符表示。二叉树节点所保存的数据类型用ElemType表示。操作:void InitBTree(BinTreeType &BT)//初始化二叉树,把它置为一课空树void CreateBTree(BinTreeType &BT)//建立对应的存储结构bool EmptyBTree(BinTreeType &BT)//判断一棵二叉树是否为空,若是则返回true,否则返回falsevoid TraverseBTree(BinTreeType &BT)//按照一定的次序遍历一棵二叉树,使得每个节点的值均被访问一次bool FindBTree(BinTreeType &BT , ElemType &node)//从二叉树中查找值为node的节点,若存在,返回true,否则返回falseint BTreeDepth(BinTreeType &BT)//求一棵二叉树的深度void ClearBTree(BinTreeType &BT)//清楚二叉树中的所有节点,使之变成一棵空树…………}ADT 二叉树4二叉树的基本操作方法Part four二叉树的遍历遍历:按照一定的次序访问树中所有节点,并且每个节点的值仅被访问一次的过程。根节点 N左子树 L右子树 R先序遍历中序遍历后序遍历二叉树的遍历遍历:按照一定的次序访问树中所有节点,并且每个节点的值仅被访问一次的过程。根节点 N左子树 L右子树 R先序遍历中序遍历后序遍历二叉树的遍历遍历:按照一定的次序访问树中所有节点,并且每个节点的值仅被访问一次的过程。根节点 N左子树 L右子树 R先序遍历中序遍历后序遍历二叉树的遍历遍历:按照一定的次序访问树中所有节点,并且每个节点的值仅被访问一次的过程。根节点 N左子树 L右子树 R先序遍历中序遍历后序遍历二叉树的遍历若二叉树为非空:(1)访问根节点(2)先序遍历左子树(3)先序遍历右子树先序遍历ABCABC先序遍历中序遍历后序遍历二叉树的遍历若二叉树为非空:(1)访问根节点(2)先序遍历左子树(3)先序遍历右子树先序遍历ABCABCDEDE先序遍历中序遍历后序遍历二叉树的遍历若二叉树为非空:(1)访问根节点(2)先序遍历左子树(3)先序遍历右子树先序遍历void preorder (BiTree T){if(T!=NULL){cout<data;preorder(T->lchild);preorder(T->rchild );}}算法实现:先序遍历中序遍历后序遍历二叉树的遍历void preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}ABCDEFAAAAAA先序遍历中序遍历后序遍历二叉树的遍历void preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}ABCDEFAAAAAvoid preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}BBBBBAB先序遍历中序遍历后序遍历二叉树的遍历void preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}ABCDEFAAAAAvoid preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}BBBBBABvoid preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}DDDDDD先序遍历中序遍历后序遍历二叉树的遍历void preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}ABCDEFAAAAAvoid preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}BBBBBABvoid preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}DDDDDD先序遍历中序遍历后序遍历二叉树的遍历void preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}ABCDEFAAAAAvoid preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}BBBBBABvoid preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}DDDDDD先序遍历中序遍历后序遍历二叉树的遍历void preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}ABCDEFAAAAAvoid preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}BBBBBABvoid preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}DEEEEEE先序遍历中序遍历后序遍历二叉树的遍历void preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}ABCDEFAAAAAvoid preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}BBBBBABvoid preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}DEEEEEE先序遍历中序遍历后序遍历二叉树的遍历void preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}ABCDEFAAAAAvoid preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}BBBBBABvoid preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}DEEEEEE先序遍历中序遍历后序遍历二叉树的遍历void preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}ABCDEFAAAAAvoid preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}BBBBBABDE先序遍历中序遍历后序遍历二叉树的遍历void preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}ABCDEFAAAAAABDEvoid preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}CCCCCC先序遍历中序遍历后序遍历二叉树的遍历void preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}ABCDEFAAAAAABDEvoid preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}CCCCCC先序遍历中序遍历后序遍历二叉树的遍历void preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}ABCDEFAAAAAABDEvoid preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}CCCCCCvoid preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}FFFFFF先序遍历中序遍历后序遍历二叉树的遍历void preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}ABCDEFAAAAAABDEvoid preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}CCCCCCvoid preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}FFFFFF先序遍历中序遍历后序遍历二叉树的遍历void preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}ABCDEFAAAAAABDEvoid preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}CCCCCCvoid preorder (BiTree T){if( T!=NULL){cout<< T->data;preorder( T->lchild);preorder( T->rchild); );}}FFFFFF先序遍历中序遍历后序遍历二叉树的遍历ABCDEFABDECF先序遍历中序遍历后序遍历二叉树的遍历若二叉树为非空:(1)中序遍历左子树(2)访问根节点(3)中序遍历右子树中序遍历void inorder (BiTree T){if(T!=NULL){inorder(T->lchild);cout<data;inorder(T->rchild );}}算法实现:先序遍历中序遍历后序遍历二叉树的遍历若二叉树为非空:(1)后序遍历左子树(2)后序遍历右子树(3)访问根节点后序遍历void postorder (BiTree T){if(T!=NULL){postorder(T->lchild);postorder(T->rchild );cout<data;}}算法实现:课后思考给定一个二叉树的前序和中序遍历序列,输出其后序遍历序列输入3 4 1 6 2 5 8 91 4 6 3 2 8 5 9输出?用抽象数据类型表示二叉树信息技术选择性必修1 | 数据与数据结构 | 第四章第三节 展开更多...... 收起↑ 资源预览