引自: http://www.cnblogs.com/dolphin0520/archive/2011/07/13/2105236.html 图的遍历有两种遍历方式:深度优先遍历(depth-first search)和广度优先遍历(breadth-first search ...
引自: http://www.cnblogs.com/dolphin0520/archive/2011/07/13/2105236.html 图的遍历有两种遍历方式:深度优先遍历(depth-first search)和广度优先遍历(breadth-first search ...
最近在刷leetcode时,刷到了二叉树中序遍历的题目,所以特在此记录一下,下面我将给出中序遍历的递归实现和非递归(迭代)实现的代码与算法思想: 1. 中序遍历的递归实现: 递归实现的算法思想:先中序遍历左子树,然后访问根节点,最后访问右子树。 2. 中序遍历的非递归 ...
二叉树的遍历 二叉树的遍历分为三种:前序遍历 中序遍历 后序遍历 前序遍历:按照“根左右”,先遍历根节点,再遍历左子树 ,再遍历右子树 中序遍历:按照“左根右“,先遍历左子树,再遍历根节点,最后遍历右子树 后续遍历:按照“左右根”,先遍历左子树,再遍历右子树,最后 ...
...
关键点: 当该结点为非空,进行访问左结点; 当这个元素出栈时,需要考虑其访问次数:如果次数为1,那么需要将其再次入栈,然后遍历右子树。如果次数为2,那么表示以该节点为跟的子树访问完毕,置为null。 上述的核心遍历代码是对不同的结点以出栈和入栈为单位(遇到非空,进行入 ...
参考博客:图的深度优先遍历(递归、非递归;邻接表,邻接矩阵) 本代码有个问题:就是结点是对应存储下标的,要解决这个问题,可以增加一个定位函数(LocateVec),不修改也可以使代码简洁些 关于非连通图的bug已修改,就是增加了dfsTraverse函数循环遍历一遍结点:没访问过则再做一次 ...
思路: 1. 使用一个栈保存结点(列表实现); 2. 如果结点存在,入栈,然后将当前指针指向左子树,直到为空; 3. 当前结点不存在,则出栈栈顶元素,并把当前指针指向栈顶元素的右子树; 4. 栈不为空,循环2、3部。 代码如下,解决了leetcode94. Binary Tree ...
leetcode 145. Binary Tree Postorder Traversal 思路一: 使用一个栈stack保存经过的根结点,另一个栈flag保存每个结点的右子树是否遍历; 如果根结点存在,结点入栈,并把结点的右子树遍历结果置为0,代表没遍历; 把root ...