二叉树中序遍历

来源:互联网 发布:vb.net 复制文件夹 编辑:程序博客网 时间:2024/05/22 14:37

递归版本:

void _InOrderR(Node<T>* pRoot){if (NULL == pRoot)//出口return;_InOrderR(pRoot->LC);//访问左子树cout << pRoot->data << " ";//访问结点_InOrderR(pRoot->RC);//访问右子树}

非递归版本:

void _InOrderNor(Node<T>* pRoot){if (NULL == pRoot)return;stack<Node<T>*> s;//利用栈结构来保存结点Node<T>* pTmp = pRoot;//开始时栈为空,循环条件是为了能够进入循环while (NULL != pTmp || !s.empty()){while (pTmp){//一直向左找到最左边的结点,保存路径上的所有节点s.push(pTmp);pTmp = pTmp->LC;}//访问栈顶的结点pTmp = s.top();s.pop();cout << pTmp->data << " ";//将该结点的右孩子看做一颗树,再次进行遍历,若右孩子不存在,//那么就进不去上面的while,就会去访问该节点之前的一个结点pTmp = pTmp->RC;}}


0 0
原创粉丝点击