二叉樹非遞歸遍歷

//非遞歸先序遍歷
void preorderTraverse(TreeNode* root)
{
    stack<TreeNode*> Stack;
    if(!root)
    {
        printf("空樹!\n");
        return;
    }

    TreeNode* node = root;
    while (node || !Stack.empty())
    {
        while (node)
        {
            Stack.push(node);
            visit(node);
            node = node->left;
        }
        node = Stack.top();
        Stack.pop();

        node = node->right;
    }
}

//非遞歸中序遍歷  
void inorderTraverse(TreeNode* root)//非遞歸中序遍歷  
{
    stack<TreeNode*> Stack;
    if(!root)
    {
        printf("空樹!\n");
        return;
    }

    TreeNode* node = root;
    while (node || !Stack.empty())
    {
        while (node)
        {
            Stack.push(node);
            node = node->left;
        }
        node = Stack.top();
        visit(node);
        Stack.pop();

        node = node->right;
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章