给定一个二叉树
示例:
输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]
#include <stdio.h>
struct node {
struct node *left;
struct node *right;
int val;
};
void PreOrderTraversal(struct node *root) {
if (root == NULL) {
return;
}
printf("%d\n", root->val);
PreOrderTraversal(root->left);
PreOrderTraversal(root->right);
}
int main() {
struct node a, b, c;
a.val = 1;
b.val = 2;
c.val = 3;
a.left = NULL;
a.right = &b;
b.right = NULL;
b.left = &c;
c.left = c.right = NULL;
PreOrderTraversal(&a);
}
中序遍历
#include <stdio.h>
struct node {
struct node *left;
struct node *right;
int val;
};
void InOrderTraversal(struct node *root) {
if (root == NULL) {
return;
}
InOrderTraversal(root->left);
printf("%d\n", root->val);
InOrderTraversal(root->right);
}
int main() {
struct node a, b, c;
a.val = 1;
b.val = 2;
c.val = 3;
a.left = NULL;
a.right = &b;
b.right = NULL;
b.left = &c;
c.left = c.right = NULL;
InOrderTraversal(&a);
}
后序遍历
#include <stdio.h>
struct node {
struct node *left;
struct node *right;
int val;
};
void PostOrderTraversal(struct node *root) {
if (root == NULL) {
return;
}
PostOrderTraversal(root->left);
PostOrderTraversal(root->right);
printf("%d\n", root->val);
}
int main() {
struct node a, b, c;
a.val = 1;
b.val = 2;
c.val = 3;
a.left = NULL;
a.right = &b;
b.right = NULL;
b.left = &c;
c.left = c.right = NULL;
PostOrderTraversal(&a);
}