用js实现的二叉树非递归遍历
即使是做前端,发现自己的数据结构还是很薄弱,所以每天学习一点数据结构吧!今天学习了二叉树的非递归遍历。
一:先序遍历
主要思路:通过栈来解决,先序遍历是根左右的顺序,由根节点沿左子树一直遍历下去,在遍历过程中每遇到一个结点就将其内容输出并将该结点压入栈中。当没有左子树时就将这个结点弹出栈,并从这个结点的右子树继续向下遍历。
<pre name="code" class="javascript"><span style="font-size:18px;">//二叉树的非递归遍历
function BinaryTreeNode(data, left, right) {
this.data = data;
this.left = left;
this.right = right;
return this;
}
function BinaryTree() {
this.root = null;
}
//二叉树先序遍历
BinaryTree.prototype.preorder = function()
{
var tree_array_data = []; //存放遍历结果
var stack = []; /