本文地址: 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),布布扣,bubuko.com
原文地址:http://blog.csdn.net/caroline_wendy/article/details/36872219