数据结构之二叉树深度
来源:互联网 发布:那些是java future 编辑:程序博客网 时间:2024/04/28 04:52
原文地址:
http://www.cnblogs.com/xwdreamer/archive/2012/10/13/2722536.html
面试题:二叉树的深度
题目:输入一棵二叉树的根节点,求该树的深度。从根节点到叶子结点一次经过的结点形成树的一条路径,最长路径的长度为树的深度。根节点的深度为1。
解体思路:如果根节点为空,则深度为0,返回0,递归的出口如果根节点不为空,那么深度至少为1,然后我们求他们左右子树的深度,比较左右子树深度值,返回较大的那一个通过递归调用
#include <iostream>#include <stdlib.h>using namespace std;struct BinaryTreeNode{ int m_nValue; BinaryTreeNode* m_pLeft; BinaryTreeNode* m_pRight;};//创建二叉树节点BinaryTreeNode* CreateBinaryTreeNode(int value){ BinaryTreeNode* pNode=new BinaryTreeNode(); pNode->m_nValue=value; pNode->m_pLeft=NULL; pNode->m_pRight=NULL; return pNode;}//连接二叉树节点void ConnectTreeNodes(BinaryTreeNode* pParent,BinaryTreeNode* pLeft,BinaryTreeNode* pRight){ if(pParent!=NULL) { pParent->m_pLeft=pLeft; pParent->m_pRight=pRight; }}//求二叉树深度int TreeDepth(BinaryTreeNode* pRoot){ ////如果pRoot为NULL,则深度为0,这也是递归的返回条件 if(pRoot==NULL) { return 0; } //如果pRoot不为NULL,那么深度至少为1,所以left和right=1 int left=1; int right=1; //求出左右子树的深度 left+=TreeDepth(pRoot->m_pLeft); right+=TreeDepth(pRoot->m_pRight); //返回是深度比较大的一个 return left>right?left:right;}int main(){// 1// / \// 2 3// /\ \// 4 5 6// /// 7 //创建树结点 BinaryTreeNode* pNode1 = CreateBinaryTreeNode(1); BinaryTreeNode* pNode2 = CreateBinaryTreeNode(2); BinaryTreeNode* pNode3 = CreateBinaryTreeNode(3); BinaryTreeNode* pNode4 = CreateBinaryTreeNode(4); BinaryTreeNode* pNode5 = CreateBinaryTreeNode(5); BinaryTreeNode* pNode6 = CreateBinaryTreeNode(6); BinaryTreeNode* pNode7 = CreateBinaryTreeNode(7); //连接树结点 ConnectTreeNodes(pNode1, pNode2, pNode3); ConnectTreeNodes(pNode2, pNode4, pNode5); ConnectTreeNodes(pNode3, NULL, pNode6); ConnectTreeNodes(pNode5, pNode7, NULL ); int depth=TreeDepth(pNode1); cout<<depth<<endl; system("pause"); return 0;}
0 0
- 数据结构之二叉树深度
- 数据结构之二叉树(遍历、建立、深度)
- 数据结构之二叉树(遍历、建立、深度)
- 数据结构之二叉树(遍历、建立、深度)
- 数据结构之二叉树(遍历、建立、深度)
- 数据结构之二叉树(遍历、建立、深度)
- 数据结构之二叉树(遍历、建立、深度)
- 数据结构之二叉树深度的求解
- 数据结构之二叉树的深度优先遍历
- 数据结构实验之二叉树的建立与遍历,求二叉树深度
- 数据结构实验之二叉树八:(中序后序)求二叉树的深度
- SDUT-2804 数据结构实验之二叉树八:(中序后序)求二叉树的深度
- 数据结构实验之二叉树八:(中序后序)求二叉树的深度
- 数据结构实验之二叉树八:(中序后序)求二叉树的深度
- 数据结构实验之二叉树八:(中序后序)求二叉树的深度
- 数据结构实验之二叉树八:(中序后序)求二叉树的深度
- 数据结构实验之二叉树八:(中序后序)求二叉树的深度
- 数据结构实验之二叉树八:(中序后序)求二叉树的深度
- JDBC连接数据库
- MAC显示隐藏文件
- java多线程
- 【PHP】五分钟教你编写一个实时弹幕网站
- iOS OC与JS的交互(WebViewJavascriptBridge实现)
- 数据结构之二叉树深度
- 工作一年感悟
- Android 后台运行程序要求重新登录
- Thread和Runnable实现多线程的区别
- 南邮蓝桥杯热身赛2
- 为什么别名不能在group by中用?
- 三星手机逻辑电路图
- ROS学习(一)开发环境配置
- JAVA 3D开发工具包(3个版本安装包 + 一个用例)