C/C++教程

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

本文主要是介绍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;
}

 

这篇关于C++ NC161二叉树的中序遍历的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!