深度遍历DFS
递归
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
void treeTraversal(TreeNode* node, vector<int> &vec) {
if (node == NULL) return;
treeTraversal(node->left, vec);
vec.push_back(node->val);
treeTraversal(node->right, vec);
}
vector<int> inorderTraversal(TreeNode* root) {
vector<int> result;
treeTraversal(root, result);
return result;
}
};
广度遍历BFS
利用队列,将同一层的节点压入队列,加入数组,弹出队列。
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
vector<vector<int>> levelOrderBottom(TreeNode* root) {
vector<vector<int>> v1;
if(root == NULL)
return v1;
queue<TreeNode *>p;
p.push(root) ;
while(!p.empty())
{
vector<int > v2;
int len = p.size();
for(int i = 0;i<len;i++)
{
TreeNode *t = p.front();
v2.push_back(t->val);
p.pop();
if(t->left) p.push(t->left);
if(t->right) p.push(t->right);
}
v1.push_back(v2);
}
reverse(v1.begin(),v1.end());
return v1;
}
};