首页 > 代码库 > 给定一个二叉树,获取该二叉树的宽度深度
给定一个二叉树,获取该二叉树的宽度深度
题目:
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; }
给定一个二叉树,获取该二叉树的宽度深度
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。