zoukankan      html  css  js  c++  java
  • 数组转二叉树

    全部代码

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #include <assert.h>
     4 
     5 typedef struct node
     6 {
     7     int nValue;
     8     struct node *pLeft;
     9     struct node *pRight;
    10 }BiTree;
    11 
    12 BiTree *ArrToBiTree(int arr[], int len)
    13 {
    14     BiTree *pRoot = NULL;
    15     int i;
    16 
    17     assert(arr!=NULL && len>0);
    18 
    19     //创建结构体数组
    20     pRoot = (BiTree *)malloc(sizeof(BiTree)*len);
    21     if(NULL == pRoot)
    22     {
    23         printf("pRoot空间分配失败!
    ");
    24         exit(-1);
    25     }
    26     
    27     //结构体数组赋初值
    28     for(i=0; i<len; ++i)
    29     {
    30         pRoot[i].nValue = arr[i];
    31         pRoot[i].pLeft = NULL;
    32         pRoot[i].pRight = NULL;
    33     }
    34 
    35     //父亲节点与左右孩子关联
    36     for(i=0; i<=len/2-1; ++i)
    37     {
    38         //有左孩子
    39         if(2*i+1 < len)
    40         {
    41             pRoot[i].pLeft = &pRoot[2*i+1];
    42         }
    43 
    44         //有右孩子
    45         if(2*i+2 < len) 
    46         {
    47             pRoot[i].pRight = &pRoot[2*i+2];
    48         }
    49     }
    50 
    51     return pRoot;
    52 }
    53 
    54 void PrevOrderTraversal(BiTree *pRoot)
    55 {
    56     if(NULL == pRoot)
    57     {
    58         return;
    59     }
    60 
    61     printf("%d ", pRoot->nValue);
    62     PrevOrderTraversal(pRoot->pLeft);
    63     PrevOrderTraversal(pRoot->pRight);
    64 }
    65 
    66 int main(void)
    67 {
    68     BiTree * pRoot = NULL;
    69 
    70     int arr[] = {1, 2, 3, 4, 5, 6, 7};
    71     int len = sizeof(arr)/sizeof(arr[0]);
    72     pRoot = ArrToBiTree(arr, len);
    73     PrevOrderTraversal(pRoot);
    74 
    75     return 0;
    76 }
  • 相关阅读:
    UVALive 6319 暴力
    UVALive 6322 最大匹配
    uvalive 6323 状态压缩DP
    hdu 3874 树状数组
    hdu 3721 树的直径
    hdu 4258 斜率DP
    组队练习 2011年福州全国邀请赛
    FZU 2041 二分枚举
    Kafka基础教程(三):C#使用Kafka消息队列
    Kafka基础教程(二):Kafka安装
  • 原文地址:https://www.cnblogs.com/chen-cai/p/7811182.html
Copyright © 2011-2022 走看看