2014-08-31 39 views
0

我知道這個問題可能在自己的方式中是微不足道的,但我試圖從等級順序輸入生成一個二叉樹,然後遍歷它以表示該樹已保存在數據中結構體。說,如果輸入的是像 - [A,S,E,R,T,*,W],它會產生如下表示的二進制二叉樹 -從等級順序輸入中創建二叉樹

    a 
       /\ 
        s e 
       /\ /\ 
       r t * w 

是否有實現這種方式,就像從樹型輸入中生成二叉樹一樣。如果以前有人遇到過這種問題,請在JAVA中分享一些實現,比如使用隊列。

+0

你怎麼知道哪些節點屬於每個級別?需要某種分離器。還是樹保證是完整的?這就像做一個BFS搜索的逆過程,從列表中創建樹而不是遍歷它 – 2014-08-31 20:01:18

+0

這就是假設提供的String/List已經在級別順序語法中,所以String/List的第一個元素是根,下兩個分別是左和右,依此類推。 – NewBee 2014-08-31 20:04:30

+0

是的,但是如果一個子樹沒有全部孩子呢? – 2014-08-31 20:05:31

回答

1

這是一個粗略的想法,但你可以確切地知道落在給定水平上的範圍。

假設當前等級包含從i到i + k的x個非*元素,那麼下一個等級將包​​含從i + k + 1到i + k + 2x的2個元素, i + k + 1,並從左到右將當前級別上的每個非*元素分配給兩個子元素。

類似地,下一級計數該級別包含的非元素的數量。並重復。