剑指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);
}

 

posted @ 2015-08-18 11:29  马小豆包  阅读(209)  评论(0编辑  收藏  举报