二叉树的遍历:
1.递归法:
递归的方法论:
1.确定递归函数的参数和返回值
2.确定终止条件
3.确定单层递归逻辑
代码:
class Solution {//前序遍历
public:
vector<int>vec;
void traversal(TreeNode* cur){
if(cur==NULL) return;
vec.push_back(cur->val);//中
traversal(cur->left);//左
traversal(cur->right);//右
}
vector<int> preorderTraversal(TreeNode* root) {
traversal(root);
return vec;
}
};
前中后序遍历相差不大。
2.迭代法:
二叉树的定义:
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};