C++ NC161二叉树的中序遍历

 

中序遍历是指:左子节点→根节点→右子节点的方式遍历二叉树。

循环的方法进行中序遍历

vector<int> inorderTraversal(TreeNode* root)
{
    stack<TreeNode*> stk;//暂存树节点的栈
    vector<int> result;//存放结果
    TreeNode* p = root;//指向当前树节点地址的指针
    while (p || !stk.empty())
    {
        while (p)//找到当前未加入栈的最左端树节点
        {
            stk.push(p);
            p = p->left;
        }

        if (!stk.empty())//从栈中取出节点
        {
            p = stk.top();
            stk.pop();
            result.push_back(p->val);
            p = p->right;
        }
    }
    return result;
}

 

posted @ 2021-10-16 19:50  mshentai  阅读(29)  评论(0编辑  收藏  举报