首页 > 编程知识 正文

二叉树的三种遍历例题带图,数据结构先序中序后序理解

时间:2023-05-04 08:12:49 阅读:157375 作者:4321

利用堆栈实现非递归遍历,先推堆栈,空时弹堆栈,实现左中右遍历.

# include iostream # include vector # include algorithm # include includestackstructtreenode { intval; zjdmzleft; zjdmzright; treenode(intx ) : val(x ) x,left (nullptr ),right (nullptr ) }; //递归voidinordertraversalrecursion (kydgqroot,std:vectorint res ) if ) root ) inordertraversalrecursion ) root ) inordertraversalrecursion (根权限,res; }//非递归voidinordertraversal(kydgqroot,std:vectorint res ) STD33603360stackkydgq; wile (根|! s.empty () ) if ) root ) ) s.push ) root; root=root-left (else ) root=s.top ); s.pop (; RES.push_back(root-val; root=root-right } }}int main () kydGQN1=newtreenode ) 1; kydGQN2=newtreenode(2; kydGQN3=newtreenode(3; kydGQN4=newtreenode(4; kydGQN5=newtreenode(5; kydGQN6=newtreenode(6; kydGQN7=newtreenode(7; n1-left=n2; n1-right=n5; n2-left=n3; n2-right=n4; n5-left=n6; n5-right=n7; std:vectorint res; inordertraversalrecursion(N1,res ); STD:3360copy(RES.begin )、res.end )、STD 3360: ostream _ iterator int ) STD3360:cout,' '; STD : cout STD :3360 endl; res.clear (; nordertraversal(N1,res ); STD:3360copy(RES.begin )、res.end )、STD 3360: ostream _ iterator int ) STD3360:cout,' '; STD : cout STD :3360 endl; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。