码迷,mamicode.com
首页 > 编程语言 > 详细

给定一个有序数组(递增),写程序构建一棵具有最小高度的二叉树。

时间:2015-01-29 09:37:31      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:二叉树   给定一个有序数组递增   写程序构建一棵具有最小高度的二叉树   

给定一个有序数组(递增),写程序构建一棵具有最小高度的二叉树。

    struct Node  
    {  
        int value;  
        Node *left;  
        Node *right;  
    };  
      
    void createTree(int a[], int begin, int end, Node* &root, Node *parent, bool leftChild)  
    {  
        if (begin > end)  
        {  
            return;  
        }  
        int mid = begin + (end-begin)/2;  
        Node *p = new Node();  
        p->value = a[mid];  
        if (root == NULL)  
        {  
            root = p;  
        }  
        else  
        {  
            if (leftChild)  
            {  
                parent->left = p;  
            }  
            else  
            {  
                parent->right = p;  
            }  
        }  
      
        if (begin > mid-1)  
        {  
            p->left = NULL;  
        }  
        else  
        {  
            createTree(a, begin, mid-1, root, p, true);  
        }  
      
        if (mid+1 > end)  
        {  
            p->right = NULL;  
        }  
        else  
        {  
            createTree(a, mid+1, end, root, p, false);  
        }  
    }  


给定一个有序数组(递增),写程序构建一棵具有最小高度的二叉树。

标签:二叉树   给定一个有序数组递增   写程序构建一棵具有最小高度的二叉树   

原文地址:http://blog.csdn.net/zeb_perfect/article/details/43237179

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!