博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
求二叉树的深度和宽度
阅读量:6329 次
发布时间:2019-06-22

本文共 1801 字,大约阅读时间需要 6 分钟。

// 求二叉树的深度和宽度.cpp : 定义控制台应用程序的入口点。#include "stdafx.h"#include 
#include
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 = 0;//二叉树的宽度 queue
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 > nLastLevelWidth ? nCurLevelWidth : nLastLevelWidth; 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;}

运行结果:

 

你可能感兴趣的文章
负载均衡
查看>>
Hibernate - 多对多级联修改的问题
查看>>
python入门(二)
查看>>
Stockbroker Grapevine
查看>>
【转】关于大型网站技术演进的思考(十九)--网站静态化处理—web前端优化—上(11)...
查看>>
CLR线程池
查看>>
2017-03-1<Bluetooth基本操作>
查看>>
Python 设计模式系列之二: 创建型 Simple Factory 模式
查看>>
PHP面试题之算法解析
查看>>
【多线程同步案例】Race Condition引起的性能问题
查看>>
datetime的小坑
查看>>
QT-简易视频播放器
查看>>
第一次毕业设计任务书
查看>>
shell脚本编程基础
查看>>
archlinux flash chromium lib path
查看>>
查询指定时间段的数据
查看>>
XenServer 优化
查看>>
mysql中 decimal、numeric数据类型
查看>>
Android 访问网络须知
查看>>
p1341 无序字母对
查看>>