欢迎使用本站,预祝练习时长两年半的选手们到成功! [本模块信息来自tem/def/head]

class25 lcy 二叉树遍历

时间:2024-08-29 09:15 作者:admin 点击:
1030 cout4/3;//1 cout4.0/3;//1.33333 除号两边是整数时,结果也是整数 二叉树存储方式:fat数组,结构体指针,规律存储(编号下标) 层序:从上向下,从左向右,遍历每一层节点的次序 先序

1030

cout<<4/3;//1

cout<<4.0/3;//1.33333

除号两边是整数时,结果也是整数



二叉树存储方式:fat数组,结构体指针,规律存储(编号下标)

层序:从上向下,从左向右,遍历每一层节点的次序

先序:先遍历根结点,再先序遍历左子树,再先序遍历右子树(根左右)

中序:先中序遍历左子树,再遍历根结点,再中序遍历右子树(左根右)

后序:先后序遍历左子树,再后序遍历右子树,再遍历根结点(左右根)


出题方式1:

给出一棵二叉树,求出先序、中序、后序遍历

逻辑推理:根据根左右、左根右、左右根进行排序

程序解决:

     A                 1

   B   C           2       3

 D       G       4   0   0   7

E F     H I     8 9 0 0 0 0 14 15  


规律:对于某一节点x,如果根结点是1,则x的左子树是2x,右子树是2x+1,父节点是x/2

char tree[200]={0,'A','B','C','D',0,0,'G','E','F',0,0,0,0,'H','I'};

求先序:

void xxbl(int r){

   if(tree[r]==0) return ;

   cout<<tree[r];//根

   xxbl(r*2);//左

   xxbl(r*2+1);//右

}

求中序:

void zxbl(int r){

   if(tree[r]==0) return ;

   zxbl(2*r);//左

   cout<<tree[r];//根

   zxbl(2*r+1);//右

}

求后序:

void hxbl(int r){

   if(tree[r]==0) return ;

   hxbl(r*2);//左

   hxbl(r*2+1);//右

   cout<<tree[r];//根

}


出题方式2:给出先序中序,求后序

下次讲

(责任编辑:admin)
    顶一下
    (0)
    0%
    踩一下
    (0)
    0%