博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
已知有序数组求最小深度二叉树
阅读量:4569 次
发布时间:2019-06-08

本文共 1232 字,大约阅读时间需要 4 分钟。

#include<stdio.h>

#include<assert.h>
#include<stdlib.h>
typedef struct _tree_node
{
    int m_nValue;
    struct _tree_node *m_pLeft;
    struct _tree_node *m_pRight;
}TreeNode;
TreeNode* createNode(int value)
{
     TreeNode* pNode=(TreeNode *)malloc(sizeof(TreeNode));
     assert(pNode!=NULL);
     pNode->m_nValue=value;
     pNode->m_pLeft=NULL;
     pNode->m_pRight=NULL;
     return pNode;
}
TreeNode* arrToTree(int *arr,int start,int end)
{
     TreeNode *pHead=NULL;
     if(end>=start)
     {
          int mid=(start+end)>>1;
          pHead=createNode(arr[mid]);
          pHead->m_pLeft=arrToTree(arr,start,mid-1);
          pHead->m_pRight=arrToTree(arr,mid+1,end);
     }   
     return pHead;
}
void printTree(TreeNode *pHead)
{
     if(pHead==NULL)
     return;
     printTree(pHead->m_pLeft);
     printf("%d ",pHead->m_nValue);
     printTree(pHead->m_pRight);
}
int getTreeHeight(TreeNode *pHead)
{
    if(pHead==NULL)
    return 0;
    return getTreeHeight(pHead->m_pLeft)>getTreeHeight(pHead->m_pRight)?getTreeHeight(pHead->m_pLeft)+1:getTreeHeight(pHead->m_pRight)+1;
}
int main()
{
    int arr[]={0,1,2,3,4,5,6,7,8,9};
    int len=sizeof(arr)/sizeof(arr[0]);
    TreeNode *pHead=NULL;
    pHead=arrToTree(arr,0,len-1);
    
    printTree(pHead);
    
    int hight=getTreeHeight(pHead);
    
    printf("\n%d",hight);
    
    system("pause");
    return 0;
}

转载于:https://www.cnblogs.com/liguigen/p/3324179.html

你可能感兴趣的文章
UOJ #15 虫洞路线
查看>>
一些较好的书
查看>>
MySQL命令:约束
查看>>
音频焦点问题
查看>>
Operating System-Thread(2) Multi-Process-Parallel vs Multi-Thread-Parallel
查看>>
vi补充
查看>>
第二十一章流 5 多种打开文件的方式 文件存在,文件不存在
查看>>
【转】在Win10家庭版中启用组策略
查看>>
git 生成 公钥
查看>>
luoguP4841 城市规划
查看>>
爬虫到底是什么?
查看>>
收藏基本Java项目开发的书
查看>>
getResource()和getResourceAsStream()以及路径问题
查看>>
00080_泛型
查看>>
Java Map 键值对排序 按key排序和按Value排序
查看>>
[笔面] Java IO和网络编程相关面试
查看>>
Hive默认数据库修改配置
查看>>
面试之数据库面试题
查看>>
[转]基本Guava工具
查看>>
趁着没断网,赶快写总结
查看>>