首页 > 代码库 > 二叉树的边界打印
二叉树的边界打印
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); }
最后需要注意的是题目要求,如果是按边界进行逆时针输出则可以直接使用本方法,如果是顺时针,或者其他方向输出,则可能需要进行部分的修改。不过都是小修小补,应该问题不大。
二叉树的边界打印
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。