`
wml199039
  • 浏览: 648 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

树的一种非递归遍历

阅读更多

这种遍历 好像是有个名字的,忘了! 做html编辑器的时候,想到了这样一种算法

算法比较简单,没有采用递归,javascript实现如下,可以轻易转为其他语言

 

var queue= new Array();
var started = false;
var scanned = false;
var temp = root;
while (temp) {
	if(!scanned&&temp.firstChild){
		temp = temp.firstChild;
		continue;
	}
	queue.push(temp);
	if(temp.nextSibling){
		temp = temp.nextSibling;
		scanned = false;
		continue;
	}
	scanned = true;
	temp = temp.parentNode;
}
return queue;
 

 

分享到:
评论

相关推荐

    数据结构-非递归遍历二叉树

    非递归遍历二叉树是一种不依赖递归函数来访问树的所有节点的方法,它通常通过栈或队列等数据结构来实现。下面我们将详细探讨非递归遍历二叉树的先序、中序和后序策略。 先序遍历是二叉树遍历的一种方法,其顺序为:...

    关于二叉树前序和后序的非递归遍历算法.rar

    标题"关于二叉树前序和后序的非递归遍历算法"指的是不使用递归函数来实现二叉树的前序和后序遍历。递归方法虽然直观,但在处理大型二叉树时可能会导致栈溢出,因此非递归方法是一个更优的选择。 **前序遍历**是...

    树的建立及非递归遍历

    以下是三种非递归遍历的策略: 1. 先序遍历(根-左-右):可以使用栈来实现。首先,我们将根节点入栈,然后不断弹出栈顶元素并访问,同时将其右子节点入栈(因为我们要先处理左子树)。当一个节点的左右子节点都为...

    二叉树非递归遍历程序

    该代码片段实现了一种非递归前序遍历的方法。主要分为两个部分:首先遍历左子树,然后遍历右子树。通过不断寻找当前节点的左子节点或右子节点,并利用循环和父节点指针来追踪访问过程,直到所有节点都被访问。 ### ...

    java实现的二叉树的递归和非递归遍历

    在提供的"二叉树的递归和非递归遍历"压缩包文件中,可能包含了Java源代码,演示了如何实现这两种遍历方式。通过阅读和理解这些代码,你可以更好地掌握二叉树遍历的原理和实践,这对于理解和解决涉及二叉树的算法问题...

    2叉树的递归与非递归遍历

    二叉树是一种特殊的树结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。在二叉树的遍历中,我们通常有三种基本的遍历方法:前序遍历(先根遍历)、中序遍历和后序遍历。这些遍历方法在不同的场景下有着...

    二叉树的非递归遍历

    一种非递归方法是使用两个栈,一个用于临时存储节点,另一个用于存储已完成的子树。首先,将根节点压入临时栈。当临时栈不为空时,将其弹出并检查其左右子树是否已访问。如果没有,将其子树压入临时栈;如果有,将...

    二叉树的非递归遍历C语言

    根据提供的标题、描述以及部分代码内容,我们可以详细探讨“二叉树的非递归遍历”这一主题。这里主要关注二叉树的三种基本遍历方法:前序遍历、中序遍历和后序遍历,并且侧重于非递归实现方式。 ### 一、前序遍历 ...

    二叉树非递归遍历

    前序非递归遍历是指从根结点开始,先访问当前结点,然后访问左子树,最后访问右子树。具体实现步骤如下: 1. 创建一个空栈,用于存储结点。 2. 将根结点压入栈中。 3. 遍历栈,不断弹出栈顶元素,并访问当前结点。 ...

    二叉树递归和非递归遍历实验报告(含源码)

    在计算机科学领域,二叉树是一种基础的数据结构,它由一系列结点构成,每个结点最多有两个子结点,通常分为左子结点和右子结点。二叉树广泛应用于搜索、排序、表达式求值等多个场景。本实验报告将深入探讨二叉树的...

    二叉树的操作--递归非递归遍历、结点个数、树深度

    先序非递归遍历二叉树: a b c 中序递归遍历二叉树: b a c 中序非递归遍历二叉树: b a c 后序递归遍历二叉树: b c a 后序非递归遍历二叉树: b c a 二叉树的深度是2 二叉树的结点个数是3 Press any key to ...

    非递归遍历完全二叉树 & 递归遍历完全二叉树

    非递归遍历则需要更复杂的逻辑,但可以避免栈溢出问题,并在某些情况下提供更好的性能。 在`Tree.cpp`文件中,可能包含了上述各种遍历方法的C++实现。通过阅读和理解这些代码,你可以学习如何在实际编程中处理完全...

    二叉树递归与非递归遍历

    二叉树遍历是计算机科学中处理二叉树数据结构的一种基本操作,它涉及到访问二叉树中的每个节点。在二叉树中,每个节点最多有两个子节点,通常分为左子节点和右子节点。遍历二叉树的目的是按照某种顺序访问所有节点,...

    二叉树递归遍历,非递归遍历,按层次遍历

    本篇文章将深入探讨二叉树的三种遍历方法:递归遍历(前序、中序、后序)、非递归遍历以及层次遍历。 1. **递归遍历**: - **前序遍历**:先访问根节点,然后递归地遍历左子树,最后遍历右子树。用公式表示为:根-...

    二叉树递归非递归遍历 c语言源程序

    二叉树是一种特殊的树形结构,其中每个节点最多有两个子节点,通常称为左子节点和右子节点。 #### 2. 为什么要进行二叉树遍历? 二叉树遍历是访问(查看、处理)二叉树中的所有节点的过程,使得每个节点恰好被访问...

    数据结构二叉树遍历递归,非递归

    非递归遍历的优势在于它避免了函数调用栈的深度限制,对于非常深的树,递归可能会导致栈溢出。 在实际编程中,根据具体场景选择适当的遍历方式。例如,前序遍历常用于复制树或构建表达式树;中序遍历通常用于二分...

    二叉树的三种非递归遍历

    二叉树是数据结构中的重要概念,它是一种特殊的树形结构,每个节点最多有两个子节点,通常分为左子节点和右子节点。遍历二叉树是指按照特定顺序访问二叉树的所有节点,常见的遍历方式有前序遍历、中序遍历和后序遍历...

    递归遍历与非递归遍历文件夹.pdf

    本话题将详细探讨两种常见的遍历方式:递归遍历和非递归遍历,并结合框图来解释它们的工作原理。 首先,我们来看**递归遍历**。递归是一种编程技术,它通过调用自身来解决问题或执行任务。在遍历文件夹时,递归遍历...

Global site tag (gtag.js) - Google Analytics