52.二元树的深度(树)。

原创 2012年03月30日 15:32:10
52.二元树的深度(树)。
题目:输入一棵二元树的根结点,求该树的深度。
从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
例如:输入二元树:
                                            10
                                          /     /
                                        6        14
                                      /         /   /
                                    4         12     16
输出该树的深度3。
二元树的结点定义如下:
struct SBinaryTreeNode // a node of the binary tree
{
      int               m_nValue; // value of node
      SBinaryTreeNode  *m_pLeft;  // left child of node
      SBinaryTreeNode  *m_pRight; // right child of node
};

分析:这道题本质上还是考查二元树的遍历。


//coder:LEE 20120330
#include<iostream>
#include<CASSERT>
using namespace std;
struct SBinaryTreeNode   
{
int m_nValue;
SBinaryTreeNode * m_pLeft;
SBinaryTreeNode  * m_pRight;
};
void AddNode(SBinaryTreeNode  *& root,int n)
{
if (!root)
{
root=(SBinaryTreeNode  *)malloc(sizeof(SBinaryTreeNode  ));
root->m_nValue=n;
root->m_pLeft=NULL;
root->m_pRight=NULL;
return;
}
if(n<root->m_nValue)
AddNode(root->m_pLeft,n);
else
AddNode(root->m_pRight,n);
}
void Traverse(SBinaryTreeNode  * root)
{
	if(!root)
		return;
	
	Traverse((root->m_pLeft));
	cout<<root->m_nValue<<"  ";
	Traverse(root->m_pRight);
	
}
int ComputeDepthOfBiTree(SBinaryTreeNode * root)
{
	if(root==NULL)
		return 0;
	int LeftDepth=ComputeDepthOfBiTree(root->m_pLeft);
	int RightDepth=ComputeDepthOfBiTree(root->m_pRight);
	return LeftDepth>RightDepth?LeftDepth+1:RightDepth+1; 
}
int main()
{
	SBinaryTreeNode  * root=NULL;
	AddNode(root,8);
	AddNode(root,6);
	AddNode(root,10);
	AddNode(root,5);
	AddNode(root,7);
	AddNode(root,9);
	AddNode(root,11);
	AddNode(root,12);
	Traverse(root);
	cout<<endl;
	cout<<ComputeDepthOfBiTree(root);
	return 0;
}


二叉树的遍历并求的深度

  • 2011年05月20日 00:57
  • 3KB
  • 下载

C语言实现二叉树的各种遍历及求解深度

C语言实现二叉树的各种遍历及求解深度 一、介绍        二叉树是一种重要的数据结构,在很多方面都有重要的应用,此文主要记录了二叉树的基础知识,包括二叉树的建立、前中后序遍历方式、层次遍历方式、求...

旅行商问题(深度优先搜索 回溯法 排列树)

1.问题描述: 有一个推销员,要到n个城市推销商品,他要找出一个包含所有n个城市的具有最短路程的环路。(最后回到原来的城市) 示例:从城市1出发经过所有城市后回到城市1,要使总路程最短。 2...
  • Limbos
  • Limbos
  • 2015年12月25日 21:39
  • 3414

任意树的深度

  • 2012年11月14日 15:56
  • 1KB
  • 下载

二叉树深度、广度非递归

  • 2010年01月05日 13:34
  • 5KB
  • 下载

二叉树 深度优先搜索(DFS)、广度优先搜索(BFS)

深度优先搜索算法(Depth First Search),是搜索算法的一种。是沿着树的深度遍历树的节点,尽可能深的搜索树的分支。 当节点v的所有边都己被探寻过,搜索将回溯到发现节点v的那条边的起...

计算子树深度

  • 2012年05月05日 20:45
  • 102KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:52.二元树的深度(树)。
举报原因:
原因补充:

(最多只允许输入30个字)