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

二叉树的深度 代码(C)

 

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

 

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

 

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

 

代码:

 

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

/*eclipse cdt, gcc 4.8.1*/

#include 
#include 
#include 

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

 

 

 

 

 

 

 

你可能感兴趣的:(Algorithm)