二叉樹的周遊(深度優先、廣度優先)
Analysis
中午吃什麼—— [~~]
關于二叉樹的深度優先搜尋和廣度優先搜尋~~~
深度優先搜尋用棧實作!!廣度優先搜尋用隊列實作!!
Implement
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
void DFS(TreeNode* root){
if(root==NULL)
return;
stack<TreeNode* > myTree;
myTree.push(root);
while(!myTree.empty()){
TreeNode* node = myTree.top();
cout<<node->val<<" ";
myTree.pop();
if(node->right!=NULL)
myTree.push(node->right);
if(node->left!=NULL)
myTree.push(node->left);
}
cout<<endl;
}
void BFS(TreeNode* root){
if(root==NULL)
return ;
queue<TreeNode* > myTree;
myTree.push(root);
while(!myTree.empty()){
TreeNode* node = myTree.front();
cout<<node->val<<" ";
myTree.pop();
if(node->left!=NULL)
myTree.push(node->left);
if(node->right!=NULL)
muTree.push(node->right);
}
cout<<endl;
}