java非遞迴實現二叉樹的遍歷

2021-08-04 04:16:37 字數 1247 閱讀 4782

<1>初始化設定乙個堆疊;

<2>把根節點指標入棧;

<3>當棧非空時,迴圈執行步驟3-1到步驟3-3

3-1:出棧取得棧頂節點,訪問該節點;

3-2:若該節點的右孩子節點非空,則將該節點的右孩子節點指標入棧;

3-3:若該節點的左孩子節點非空,則將該節點的左孩子節點指標入棧;

<4>演算法結束

步驟如下:

至此,中序輸出順序為:d->b->h->e->i->a->f->c->g

程式**如下:

public class binarynode

public binarynode(e data)

public binarynode()

public boolean isleaf()

public string tostring()

}

public class linkedstackimplements sstack

public boolean isempty()

public boolean push(e element)

this.top = new node(element,this.top);

return true;

} public e pop()

return null;

} public e get()

return null;

}}

public class binarytree

public binarytree(binarynoderoot)

/*** 中序非遞迴遍歷

*/public void nonrecinorder()else

system.out.println();

} }}

二叉樹遞迴 非遞迴遍歷(Java實現)

遍歷是對一顆二叉樹最基本的操作,有前序遍歷 中序遍歷 後序遍歷和層次遍歷四種,都可以通過遞迴或者資料結構實現。假定葉子結構如下 static classleaf publicstring tostring 1.前序遍歷 先訪問其根節點,再訪問其左節點,最後訪問其右節點。遞迴實現 先訪問其根節點,然後...

二叉樹遍歷 遞迴 非遞迴實現

先序遍歷中序遍歷 後序遍歷 根結點 左子樹 右子樹 左子樹 根子樹 右子樹 左子樹 右子樹 根結點 先序遍歷 void preorder btree t 中序遍歷 void inorder btree t 後序遍歷 void postorder btree t 遞迴 recursion 就是子程式 ...

Java實現二叉樹的遍歷(遞迴和非遞迴)

一直以來,自己在資料結構這一塊下的功夫不怎麼多,一些常用的演算法也就是知道個大概的原理,要實現的話光靠自己想是想不出來的,還得去上網查。通過這個機會,就想著好好的鞏固一下的資料結構這塊,畢竟這是基礎中的基礎嘛。下面是以二叉樹為例,採用遞迴 非遞迴實現前序 中序 後序遍歷操作。二叉樹節點 public...