c_cpp 二叉树的边界遍历
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 二叉树的边界遍历相关的知识,希望对你有一定的参考价值。
void print_exterior_boundary(TreeNode *r) {
if(!r) return;
print_left_boundary_topdown(r);
print_leaves(r);
print_right_boundary_bottomup(r);
}
// print all leaves in left-right manner
void print_leaves(TreeNode *r) {
if(!r) return;
print_leaves(r->left);
if(!r->left && !r->right) cout << r->val << " ";
print_leaves(r->right);
}
// print all left boundry nodes, except a leaf node, in top-down manner
void print_left_boundary_topdown(TreeNode *r) {
if(!r) return;
if(r->left) {
cout << r->val << " ";
print_left_boundary_topdown(r->left);
}
else if(r->right) { // gist1
cout << r->val << " ";
print_left_boundary_topdown(r->right);
}
// do nothing if it is a leaf node, this way we avoid duplicates in output
}
void print_right_boundary_bottomup(TreeNode *r) {
if(!r) return;
if(r->right) {
print_right_boundary_bottomup(r->right);
cout << r->val << " ";
}
else if(r->left) { // gist2
print_right_boundary_bottomup(r->left);
cout << r->val << " ";
}
// do nothing if it is a leaf node, this way we avoid duplicates in output
}
以上是关于c_cpp 二叉树的边界遍历的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp C ++二叉树的三种遍历的.cpp
c_cpp 二叉搜索树的相关操作(创建,插入节点,前,中,后序递归和非递归遍历二叉树)
数据结构-二叉树的遍历
二叉树的建立及基本操作
LeetCode Java刷题笔记—102. 二叉树的层序遍历
A 1020 Tree Traversals (25分) 题型: 二叉树的遍历 之 由后序和中序得到层次遍历