码迷,mamicode.com
首页 > 其他好文 > 详细

二叉树的边界打印

时间:2017-07-12 01:02:13      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:cout   使用   tin   思路   return   span   题目   注意   顺时针   

2017-07-11 22:59:29

二叉树的边界打印刚开始看到的时候觉得还是有难度的,主要是想一次通过递归完成,不过后来,在车下仔细思考后觉得其实是很简单的一个问题。

基本思路就是按左子树,叶子子树和右子树进行分别的打印就可以很好的解决这个问题。

而每一部分的打印只需要使用基本的递归思想就可以了。

具体的代码如下:

void leftin(Bintree* root)
{
    if(root&&root->left)
    {
        cout<<root->data<<" ";
        leftin(root->left);
    }
}

bool isleaf(Bintree* node)
{
    if(!node->left&&!node->right) return true;
    else return false;
}

void bottomin(Bintree* root)
{
    if(root)
    {
        if(isleaf(root)) cout<<root->data<<" ";
        else
        {
            bottomin(root->left);
            bottomin(root->right);
        }
    }
}

void rightin(Bintree* root)
{
    if(root&&root->right)
    {
        rightin(root->right);
        cout<<root->data<<" ";
    }
}

void printtree(Bintree* root)
{
    leftin(root);
    bottomin(root);
    rightin(root->right);
}

最后需要注意的是题目要求,如果是按边界进行逆时针输出则可以直接使用本方法,如果是顺时针,或者其他方向输出,则可能需要进行部分的修改。不过都是小修小补,应该问题不大。

 

二叉树的边界打印

标签:cout   使用   tin   思路   return   span   题目   注意   顺时针   

原文地址:http://www.cnblogs.com/TIMHY/p/7153056.html

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