二叉树的边界打印
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); }
最后需要注意的是题目要求,如果是按边界进行逆时针输出则可以直接使用本方法,如果是顺时针,或者其他方向输出,则可能需要进行部分的修改。不过都是小修小补,应该问题不大。
以上是关于二叉树的边界打印的主要内容,如果未能解决你的问题,请参考以下文章