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分) 题型: 二叉树的遍历 之 由后序和中序得到层次遍历