天天看點

二叉樹的周遊(深度優先、廣度優先)二叉樹的周遊(深度優先、廣度優先)

二叉樹的周遊(深度優先、廣度優先)

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;
}