二叉树的先序遍历的递归和非递归

操作方法

  • 01

    //队列非递归遍历需要 template<class NodeType> class Stack { public: Stack(){nIndex = 0;} ~Stack(){} //入栈 void Push(NodeType *p) { arr[nIndex] = p; ++nIndex; } //获取栈顶元素 NodeType *Top() { --nIndex; if (nIndex<0) { nIndex = 0; return NULL; } return arr[nIndex]; } bool IsEmpty() { return nIndex == 0; } private: NodeType *arr[100]; int nIndex;//栈顶的位置 }; struct Node { int nData; struct Node *pLchild; struct Node *pRchild; }; //递归遍历 void DG_BianLi(Node *pTree) { if (!pTree) { return; } printf("%d ",pTree->nData); DG_BianLi(pTree->pLchild); DG_BianLi(pTree->pRchild); } //非递归遍历 void FDG_BianLi(Node *pTree) { Node *pNode = pTree; Stack<Node> stack; while(pNode || !stack.IsEmpty()) { if (pNode) { printf("%d ",pNode->nData); stack.Push(pNode); pNode = pNode->pLchild; } else { pNode = stack.Top(); pNode = pNode->pRchild; } } } int _tmain(int argc, _TCHAR* argv[]) { //创建一个小树 Node node[5] = { {1,NULL,NULL}, {2,NULL,NULL}, {3,NULL,NULL}, {4,NULL,NULL}, {5,NULL,NULL} }; node[0].pLchild = &node[1]; node[0].pRchild = &node[4]; node[1].pLchild = &node[2]; node[2].pRchild = &node[3]; //DG_BianLi(node); FDG_BianLi(node); getchar(); return 0; }

(0)

相关推荐

  • 知道中序和后序遍历,画二叉树和写出前序遍历

    知道中序遍历和后续遍历,如何画出二叉树,并写出前序遍历.其实只要知道任意两个遍历,即可画出应有的二叉树,与是否是满二叉树无关!!! 操作方法 01 如图,例子来说明.知道中序和后序遍历,画二叉树和写出 ...

  • 数据结构二叉树的遍历

    二叉树前中后续遍历,先了解基本概念,再学二叉树的遍历. 操作方法 01 首先,来认识树的相关概念.结点的度是该结点有多少个孩子结点就是该结点的度(简单来说,一个结点向下有几根出去的线,度就是几).如图 ...

  • 二叉树怎么求前序序列和中序序列

    在数据结构中,如果给出二叉树的前序序列和中序序列,应该如何绘制出完整的二叉树呢?接下来为大家讲解一下 数据结构中经常会遇到给出一个树让你去求前序遍历和中序遍历的问题,类似于这样的问题有一定的方法,只要 ...

  • 怎么正确理解二叉树的遍历

    二叉树就是一种树形存储结构,每个节点最多有两个子树. 操作方法 01 在计算机科学中,二叉树是每个节点最多有两个子树的树结构.通常子树被称作"左子树"(left subtree)和 ...

  • C语言演示二叉树算法

    二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒.二叉树的第i层至多有2i − 1个结点;深度为k的二叉树至多有2k − 1个结点;对任何一棵二叉树T,如 ...

  • C语言编程基础知识总结

    操作方法 01 在编程语言学习中,学习和巩固基础知识是很重要的,因为用来用去还是遵守最基本的语法规则,小小的错误需要花费双倍的时间去检查,所以选择一开始就写好才是最明智的,C语言数据结构与算法基础知识 ...

  • WinRAR命令行参数整理

    我的实例: 将D:/wk.doc 压缩为:final.rar d:/winrar/rar a d:/final.rar d:/wk.doc 将final.rar中的wk.doc解压到F:盘 rar e ...

  • WinRAR命令行参数整理汇集

    WinRAR支持命令行执行压缩与解压缩等,而且就一个rar.exe就能支持图形界面的很多操作,特别方便远程管理等 我的实例: 将D:/wk.doc压缩为:final.rar d:/winrar/rar ...

  • python递归函数例题(Python递归函数)

    本期笔记内容综述Python函数定义再回顾函数的参数传递Python函数递归问题7分钟学习系列1.Python函数再回顾著名的斐波拉契数列除了第一个数和第二个数外,任意一个数都可由前两个数相加得到:1 ...