<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...