码迷,mamicode.com
首页 > 编程语言 > 详细

编程算法 - 二叉树的深度 代码(C)

时间:2015-04-02 14:53:32      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:

二叉树的深度 代码(C)


本文地址: http://blog.csdn.net/caroline_wendy


题目: 输入一棵二叉树的根节点, 求该树的深度.


依次选择最深的左右子树, 然后递归加1.


代码:

/*
 * main.cpp
 *
 *  Created on: 2014.6.12
 *      Author: Spike
 */

/*eclipse cdt, gcc 4.8.1*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct BinaryTreeNode {
	int m_nValue;
	BinaryTreeNode* m_pLeft;
	BinaryTreeNode* m_pRight;
};

int TreeDepth(BinaryTreeNode* pRoot) {
	if (pRoot == NULL)
		return 0;
	int nLeft = TreeDepth(pRoot->m_pLeft);
	int nRight = TreeDepth(pRoot->m_pRight);
	return (nLeft>nRight) ? (nLeft+1):(nRight+1);
}

BinaryTreeNode* init(void) {
	BinaryTreeNode* pRoot = new BinaryTreeNode(); pRoot->m_nValue = 1;
	BinaryTreeNode* pNode2 = new BinaryTreeNode(); pNode2->m_nValue = 2;
	BinaryTreeNode* pNode3 = new BinaryTreeNode(); pNode3->m_nValue = 3;
	BinaryTreeNode* pNode4 = new BinaryTreeNode(); pNode4->m_nValue = 4;
	BinaryTreeNode* pNode5 = new BinaryTreeNode(); pNode5->m_nValue = 5;
	BinaryTreeNode* pNode6 = new BinaryTreeNode(); pNode6->m_nValue = 6;
	BinaryTreeNode* pNode7 = new BinaryTreeNode(); pNode7->m_nValue = 7;
	pRoot->m_pLeft = pNode2; pRoot->m_pRight = pNode3;
	pNode2->m_pLeft = pNode4; pNode2->m_pRight = pNode5;
	pNode4->m_pLeft = NULL; pNode4->m_pRight = NULL;
	pNode5->m_pLeft = pNode7; pNode5->m_pRight = NULL;
	pNode7->m_pLeft = NULL; pNode7->m_pRight = NULL;
	pNode3->m_pLeft = NULL; pNode3->m_pRight = pNode6;
	pNode6->m_pLeft = NULL; pNode6->m_pRight = NULL;
	return pRoot;
}

int main(void)
{
	BinaryTreeNode* pRoot = init();
	int result = TreeDepth(pRoot);
	printf("result = %d\n", result);
    return 0;
}


输出:

result = 4


技术分享


编程算法 - 二叉树的深度 代码(C)

标签:

原文地址:http://www.cnblogs.com/mengfanrong/p/4386734.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!