1. 背景:对树的操作有些陌生,自己今天刷题竟然很多点都写不对了,需要专项练习下:
1. 1需要重新整理下树的基础知识和遍历方式;
1.2. 将leetcode上关于树的题目,要刷2遍,加深自己的理解和熟练程度;
2. 树的基础操作:
2.1. 简介:树的三种遍历方式: 前序遍历,中序遍历、后序遍历;包括递归/非递归;以及分层遍历;
树的定义入下:
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
2.2. 递归的遍历
1. 前序遍历
void preorderTreeNode(TreeNode * root){
if (NULL == root){
return;
}
printf("%d\n", root->val);
preorderTreeNode(root->left);
preorderTreeNode(root->right);
return;
}
2. 中序遍历
void inorderTreeNode(TreeNode * root){
if (NULL == root){
return;
}
inorderTreeNode(root->left);
printf("%d\n", root->val);
inorderTreeNode(root->right);
return;
}
3. 后序遍历
void postorderTreeNode(TreeNode * root){
if (NULL == root){
return;
}
postorderTreeNode(root->left);
postorderTreeNode(root->right);
printf("%d\n", root->val);
return;
}