对于二叉树的三种遍历在数据结构里面已经学的很熟悉了,递归算法也很简单好记。
前序:根左右
中序:左根右
后序:左右根
就是根的位置。
代码也很简单,只需要知道什么时候输出就行。
void traversal(TreeNode* cur, vector<int>& vec) {//前序 根左右
if (cur == NULL) return;
vec.push_back(cur->val); // 根
traversal(cur->left, vec); // 左
traversal(cur->right, vec); // 右
}
void traversal(TreeNode* cur, vector<int>& vec) {//中序 根左右
if (cur == NULL) return;
traversal(cur->left, vec); // 左
vec.push_back(cur->val); // 中
traversal(cur->right, vec); // 右
}
void traversal(TreeNode* cur, vector<int>& vec) {//后序 左右根
if (cur == NULL) return;
traversal(cur->left, vec); // 左
traversal(cur->right, vec); // 右
vec.push_back(cur->val); // 中
}
(1小时)