#include <iostream>
struct Node
{
int data;
struct Node *left;
struct Node *right;
Node(int x)
{
data = x;
left = NULL;
right = NULL;
}
};
void printArr(int path[], int len)
{
int i = 0;
for (i = 0; i < len - 1; i++) {
printf("%d -> ", path[i]);
}
printf("%d\n", path[i]);
}
void printPathRecur(struct Node *node, int path[], int len)
{
if (node == NULL) return;
path[len] = node->data;
len++;
if (node->left ==NULL && node->right == NULL)
{
printArr(path, len);
} else {
printPathRecur(node->left, path, len);
printPathRecur(node->right, path, len);
}
}
void printPaths(struct Node *node)
{
int path[1000];
printPathRecur(node, path, 0);
}
int main(int argc, char** argv)
{
Node *root = new Node(1);
root->left = new Node(3);
root->left->left = new Node(2);
root->left->right = new Node(1);
root->left->right->left = new Node(1);
root->right = new Node(-1);
root->right->left = new Node(4);
root->right->left->left = new Node(1);
root->right->left->right = new Node(2);
root->right->right = new Node(5);
root->right->right->right = new Node(2);
printPaths(root);
return 0;
}
输出结果:
1 -> 3 -> 2
1 -> 3 -> 1 -> 1
1 -> -1 -> 4 -> 1
1 -> -1 -> 4 -> 2
1 -> -1 -> 5 -> 2