描述
给一个二叉树,打印其所有路径
思路:
利用后序非递归遍历,因为后序非递归遍历的特性,对于每次访问的节点,栈里面存的元素都是当前节点的祖先,所以只要判断当前节点是不是叶子节点,如果是叶子节点,那么将栈中元素取出,和当前叶子节点组成一条路径。
#include <bits/stdc++.h>
using namespace std;
struct Node {
char data;
Node* left;
Node* right;
Node(char x):data(x),left(nullptr),right(nullptr){
}
Node(){
}
};
Node* build() {
Node* root = nullptr;
char x;
x = getchar();
if (x != '#') {
root = new Node(x);
root