给定一个二叉树,获取该二叉树的宽度深度
Posted zhchoutai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了给定一个二叉树,获取该二叉树的宽度深度相关的知识,希望对你有一定的参考价值。
题目:
Description
给定一个二叉树,获取该二叉树的宽度深度。
Prototype
int GetBiNodeInfo(BiNode &head, unsigned int *pulWidth, unsigned int *pulHeight)
Input Param
head 须要获取深度的二叉树头结点
Output Param
pulWidth 宽度
pulHeight 高度
Return Value
0 成功
1 失败或其它异常
分析:使用二叉树的层序遍历,使用队列非常easy的解决这个问题
代码例如以下:
int GetBiNodeInfo(BiNode &head, unsigned int *pulWidth, unsigned int *pulHeight) { /*在这里实现功能*/ if(&head==NULL) return -1; *pulWidth=0; *pulHeight=0; queue<BiNode*> biStack; biStack.push(&head); while(!biStack.empty()){ ++(*pulHeight); if(biStack.size()>*pulWidth) *pulWidth=biStack.size(); int i=biStack.size(); while(i>0){ BiNode * temp=biStack.front(); biStack.pop(); if(temp->left!=NULL) biStack.push(temp->left); if(temp->right!=NULL) biStack.push(temp->right); i--; } } printf("pulWidth=%d\n pulHeight=%d\n",*pulWidth,*pulHeight); return 0; }
以上是关于给定一个二叉树,获取该二叉树的宽度深度的主要内容,如果未能解决你的问题,请参考以下文章
数据结构二叉树的基础操作( 1.创建二叉树2.先序遍历3.中序排序4.后序遍历 5.层序遍历6. 统计节点的数目 7.交换左右子树 8.计算并输出该二叉树的深度)