leetcode 二叉樹的前序中序後序遍歷
阿新 • • 發佈:2019-02-19
給定一個二叉樹
示例:
輸入: [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); }