(数据结构第六章)二叉树的顺序存储结构

二叉树的五条性质:1.在二叉树的第i层上至多有2^(i-1)个节点(i>=1)2.深度为k的二叉树至多有2^k-1个节点(k>=1)3.对任何一个二叉树T,如果其终端节点数为n0,度为2的节点数为n2,则n0=n2+1.证:总结点数n=n0+n1+n2设分支总数B,n=B+1B=n1+n2;两式加减即证出。补充个定义:节点拥有的子树数称为节点的度。树的度是树内各节点度的最大值。4.具有n个节点的完全二叉树的深度为floor(log(2)n)+15.如果对一颗有n个节点的完全二叉树(其深度为floor(log(2)n)+1)的节点按层序号(从第一层到floor(log(2)n)+1层,每层从左到右),则对任意节点(1<=i<=n)(1),如果i=1,则节点i是二叉树的根,无双亲,,如果i>1,则其双亲PARENT(i)是floor(i/2);(2)如果2*i>n,则节点i无左孩子(节点i为叶子节点),否则其左孩子LCHILD(i)是节点2*i;(3)如果2*i+1>n,则节点i无右孩子,否则其右孩子RCHILD(i)是节点2*i+1.

#include<cmath>#include<cstdio>#include<iostream>#include<algorithm>using namespace std;//二叉树的存储结构///———-二叉树的顺序存储表示——————-#define MAX_TREE_SIZE 100 //二叉树的最大节点树typedef int SqBiTree[MAX_TREE_SIZE]; //0号单元存储根节点SqBiTree bt;/////—————存储结构劲适用于完全二叉树———————//int main(){int d;printf("输入完全二叉树深度d:");scanf("%d",&d);printf("按层的顺序输入完全二叉树\n");for(int i=0;i< floor(pow(2,d)+0.5 )-1 ;i++)scanf("%d",bt+i);printf("按层的顺序遍历该完全二叉树为:\n");int j=0;for(int i=0;i< floor(pow(2,d)+0.5 )-1 ;i++){if(i == floor(pow(2,j)+0.5 ) ) { puts(""); j++; }printf("%d\t",bt[i]);}return 0;}

一个真正的人对困难的回答是战斗,

(数据结构第六章)二叉树的顺序存储结构

相关文章:

你感兴趣的文章:

标签云: