//二叉树的深度——层序遍历intDepth(BTN*root){if(!root)return0;LQ Q;//创建链队列InitQueue(&Q);//初始化链队列BTN*p=root;//指向二叉树结点的指针EnQueue(&Q,p);//将根结点入队intlevel=1;//记录二叉树的层序intlevel_num=1;//记录当前层次的结点个数intnextlevel_num=0;//记录下一层的结点个...
这一条比较重要,因为这是算深度的公式,由满二叉树的定义我们知道,深度为k的满二叉树的结点树为2k-1,通过n=2k-1到推出满二叉树的深度为k=log2n。完全二叉树层次序号跟满二叉树是一样的,只是再最后几个位置缺了几个,所以完全二叉树的结点数一点大于2k-1-1个,所以2k-1-1<n≤2k-1,因为n是整数,所以2k-...
}//深度初始化为0intdepth =0;//分别求左右子树的深度intLeftDepth = CalculateTreeDepth(root->lchild);intRightDepth = CalculateTreeDepth(root->rchild);//取二者中最大值,并加1(本层高度)depth = LeftDepth > RightDepth ? LeftDepth +1: RightDepth +1;returndepth; }//创建二叉树voidCreateBinaryTr...
对于遍历操作是递归的,这里是在 函数开始的时候判断 if(t),如果树为空,直接return 0,不在遍历;在函数尾部设置return 1,(内层递归并不此返回值的影响),另外对于栈、队列开辟空间失败的情况 return -1,终止操作。
1、非空二叉树的第n层上至多有2^(n-1)个元素。 2、深度为h的二叉树至多有2^h-1个结点。 满二叉树:所有终端都在同一层次,且非终端结点的度数为2。 在满二叉树中若其深度为h,则其所包含的结点数必为2^h-1。 完全二叉树:除了最大的层次即成为一颗满二叉树且层次最大那层所有的结点均向左靠齐,即集...
二.求二叉树的深度 intdepth(Node *node) {if(node==NULL)return0;else{intld=depth(node->left);intrd=depth(node->right);return(ld>rd?ld:rd)+1; } } 三.交换二叉树的左右子树 后序交换法 voidreverse(Node *node) {if(node) { reverse(node->left); ...
nodeC.rChild=&nodeE;nodeF.rChild=&nodeG;nodeG.lChild=&nodeH;//1、求二叉树 叶子数量intnum=0;calculateLeafNum(&nodeA,&num);printf("树的叶子数量:%d\n",num);//2、求树的高度和深度intheight=getTreeHeight(&nodeA);printf("树的高度:%d\n",height);//3、拷贝树structBinaryNode*newTree=...
=NULL) { pParent->m_pLeft=pLeft; pParent->m_pRight=pRight; }}//求二叉树深度int TreeDepth(BinaryTreeNode* pRoot)//计算二叉树深度{ if(pRoot==NULL)//如果pRoot为NULL,则深度为0,这也是递归的返回条件 return 0; //如果pRoot不为NULL,那么深度至少为1,...
树的深度:树中结点的最大层次就是这棵树的深度 儿子兄弟表示法可以将所有的树转化为二叉树 特殊二叉树: 斜二叉树:只有左儿子或只有右结点 完美二叉树:满二叉树 完全二叉树:结点编号与满二叉树结点编号相同(编号不间断) 二叉树的特点 一个二叉树第i层的最大节点数为:2(i-1),i>=1 ...