参考:遍历二叉树
首先,按路线、左、右的顺序遍历。
按照最初遍历的访问顺序,一定会遍历完所有最左边的道路。 ——退出条件是访问最左下方的空节点并返回。
//T是指向二叉树前端节点的结构体指针,BiTree定义为以下完整代码voidpreordertraversal(bitreet ) ) { stackBiTree s; //先将p指向前端节点BiTree p=T; 如果//指针不为null or堆栈不为null,且有可访问的元素//两者为null,则指针访问了最右下角的null指针,可以结束while(p )遍历=null s.empty ()/)访问当前特殊节点的所有左下角线,直到遇到最左下角的空节点if(p ) { coutp-data ' )//进入堆栈是在访问最左下角的空节点时(竭尽全力捕鱼,访问完当前节点的所有左下角线,返回p=p-lchild,直到遇到空节点; (//遇到左下角的空节点,返回,寻找下一个特殊节点else ) /。 此时,指针已经访问了最左下角的空节点,返回一格,p=s.top ); //如果不找到下一个特殊节点,并访问//POP其左下角的所有直线(p=p-rchild ),则下一个s.top )将再次指向该节点,并且无法返回到s.pop )。 } }