首页 > 编程语言 > 详细

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

时间:2015-01-29 09:34:34      阅读:304      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!