二叉树的边界打印

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树的边界打印相关的知识,希望对你有一定的参考价值。

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);
}

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

 

以上是关于二叉树的边界打印的主要内容,如果未能解决你的问题,请参考以下文章

算法总结之 打印二叉树的边界节点

打印二叉树的边界节点

python代码实现二叉树的分层打印

打印菜单界面,用c语言实现二叉树的基本操作

c_cpp 二叉树的边界遍历

修剪二叉树的代码