剑指offer 39_二叉树的深度
#include <stdio.h> #include <malloc.h> typedef int Item; typedef struct node{ Item m_value; struct node* m_pLeft; struct node* m_pRight; }BinaryTreeNode; int getTreeDepth(BinaryTreeNode *root){ if(root == NULL){ return 0; } int depthLeft = getTreeDepth(root->m_pLeft); int depthRight = getTreeDepth(root->m_pRight); return (depthLeft > depthRight) ? depthLeft + 1 : depthRight + 1; } void PrePrintTree(BinaryTreeNode* root){ if(root != NULL){ printf("%d ",root->m_value); }else{ return; } PrePrintTree(root->m_pLeft); PrePrintTree(root->m_pRight); printf("\n"); } int main(){ BinaryTreeNode* root = (BinaryTreeNode*)malloc(sizeof(BinaryTreeNode)); BinaryTreeNode* node2 = (BinaryTreeNode*)malloc(sizeof(BinaryTreeNode)); BinaryTreeNode* node3 = (BinaryTreeNode*)malloc(sizeof(BinaryTreeNode)); root->m_pLeft = node2; root->m_pRight = node3; BinaryTreeNode *node4 = (BinaryTreeNode*)malloc(sizeof(BinaryTreeNode)); BinaryTreeNode *node5 = (BinaryTreeNode*)malloc(sizeof(BinaryTreeNode)); BinaryTreeNode *node6 = (BinaryTreeNode*)malloc(sizeof(BinaryTreeNode)); node2->m_pLeft = node4; node2->m_pRight = node5; node3->m_pRight = node6; BinaryTreeNode *node7 = (BinaryTreeNode*)malloc(sizeof(BinaryTreeNode)); node5->m_pLeft = node7; BinaryTreeNode *node8 = (BinaryTreeNode*)malloc(sizeof(BinaryTreeNode)); BinaryTreeNode *node9 = (BinaryTreeNode*)malloc(sizeof(BinaryTreeNode)); node7->m_pLeft = node8; node7->m_pRight = node9; BinaryTreeNode *node10 = (BinaryTreeNode*)malloc(sizeof(BinaryTreeNode)); BinaryTreeNode *node11 = (BinaryTreeNode*)malloc(sizeof(BinaryTreeNode)); node9->m_pLeft = node10; node10->m_pLeft = node11; root->m_value = 1; node2->m_value = 2; node3->m_value = 3; node4->m_value = 4; node5->m_value = 5; node6->m_value = 6; node7->m_value = 7; node8->m_value = 8; node9->m_value = 9; node10->m_value = 10; node11->m_value = 11; printf("%d\n\n",getTreeDepth(root)); PrePrintTree(root); }