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) |