求二叉树的深度和宽度
来源:互联网 发布:代聊都用什么软件 编辑:程序博客网 时间:2024/05/16 15:38
// 求二叉树的深度和宽度.cpp : 定义控制台应用程序的入口点。#include "stdafx.h"#include <iostream>#include <queue>using namespace std;struct BTNode{char m_value;BTNode *m_left;BTNode *m_right;};//先序创建二叉树void CreatBTree(BTNode *&root){char nValue = 0;cin >> nValue;if ('#' == nValue){return;}else{root = new BTNode();root->m_value = nValue;CreatBTree(root->m_left);CreatBTree(root->m_right);}}//求二叉树的深度int GetDepth(BTNode *pRoot){if (pRoot == NULL){return 0;}// int nLeftLength = GetDepth(pRoot->m_left);// int nRigthLength = GetDepth(pRoot->m_right);// return nLeftLength > nRigthLength ? (nLeftLength + 1) : (nRigthLength + 1);return GetDepth(pRoot->m_left) > GetDepth(pRoot->m_right) ? (GetDepth(pRoot->m_left) + 1) : (GetDepth(pRoot->m_right) + 1);}//求二叉树的宽度int GetWidth(BTNode *pRoot){if (pRoot == NULL){return 0;}int nLastLevelWidth = 0;//记录上一层的宽度int nTempLastLevelWidth = 0;int nCurLevelWidth = 0;//记录当前层的宽度int nWidth = 1;//二叉树的宽度 queue<BTNode *> myQueue;myQueue.push(pRoot);//将根节点入队列nLastLevelWidth = 1;BTNode *pCur = NULL;while (!myQueue.empty())//队列不空{nTempLastLevelWidth = nLastLevelWidth;while (nTempLastLevelWidth != 0){ pCur = myQueue.front();//取出队列头元素myQueue.pop();//将队列头元素出对if (pCur->m_left != NULL){myQueue.push(pCur->m_left);}if (pCur->m_right != NULL){myQueue.push(pCur->m_right);}nTempLastLevelWidth--;}nCurLevelWidth = myQueue.size();nWidth = nCurLevelWidth > nWidth ? nCurLevelWidth : nWidth;nLastLevelWidth = nCurLevelWidth;}return nWidth;}int _tmain(int argc, _TCHAR* argv[]){BTNode *pRoot = NULL;CreatBTree(pRoot); cout << "二叉树的深度为:" << GetDepth(pRoot) << endl;cout << "二叉树的宽度为:" << GetWidth(pRoot) << endl;system("pause");return 0;}
运行结果:
- 求二叉树的深度和宽度
- 求二叉树的深度和宽度
- 求二叉树的深度和宽度
- 求二叉树的深度和宽度
- 求二叉树的深度和宽度
- 求二叉树的深度和宽度
- 求二叉树的深度和宽度
- 求二叉树的深度和宽度
- 求二叉数的深度和宽度
- 求二叉数的深度和宽度
- 求二叉树宽度和深度
- 华为练习 求二叉树的宽度和深度
- 求二叉树的深度和宽度[Java]
- 求二叉树的深度和宽度平衡最大距离
- 求二叉树的深度、宽度和叶子结点数
- 华为oj 求二叉树的深度和宽度
- 求二叉树的深度和宽度[Java]
- 求二叉树的深度和宽度[Java]
- 面向对象
- 使用JavaBean访问数据库
- 百度2014校招系统分析师笔试题(武汉站)
- linux下的C语言开发(makefile编写)
- 视频上传失败,大小超过了php限制
- 求二叉树的深度和宽度
- 2014百度校招PC客户端研发笔试题(西安站)
- 2014百度校招移动终端类笔试题(西安站)
- 百度2014校园招聘客户端开发笔试题(南京站)
- java中|和||的区别
- eclipse 下cocos2d-x游戏环境搭建及编译与运行
- 抠下VS2008里assert的实现
- 用户登入界面保存用户名和密码
- AutoMaper