線索化二叉樹的建立以及遍歷

2021-10-02 02:00:27 字數 1666 閱讀 7501

//定義樹

class threadedbinarytree

//構建中序線索化二叉樹

/***

* @param node 需要構建的節點

*/public void threadedtree(hero node)

//向左遞迴

threadedtree(node.getleft());

//處理前驅節點

if(node.getleft()==null)

//處理後繼節點

if(pre!=null&&pre.getright()==null)

pre = node;//保證pre指向的是當前節點的前驅節點

//向右遞迴

threadedtree(node.getright());

}//構建前序線索化二叉樹

/***

* @param node 需要構建的節點

*/public void perthreadedtree(hero node)

//處理前驅節點

if(node.getleft()==null)

//處理後繼節點

if(pre!=null&&pre.getright()==null)

pre = node;//保證pre指向的是當前節點的前驅節點

//向左遞迴

if(node.getlefttype()!=1)

//向右遞迴

if(node.getrighttype()!=1)

}//遍歷前序線索化二叉樹

public void perthreadedlist()

while (node.getrighttype() == 1)

system.out.println(node);

if(node.getlefttype() == 0)

if (node.getrighttype() == 0)}}

//遍歷中序線索化二叉樹

public void threadedlist()

system.out.println(node);

while (node.getrighttype() == 1)

node = node.getright();}}

}class hero

public void setlefttype(int lefttype)

public int getrighttype()

public void setrighttype(int righttype)

public hero(int no, string name)

public int getno()

public void setno(int no)

public string getname()

public void setname(string name)

public hero getleft()

public void setleft(hero left)

public hero getright()

public void setright(hero right)

@override

public string tostring() ';

}}

線索化二叉樹以及遍歷線索化二叉樹

1.線索二叉樹基本介紹 n個結點的二叉鍊錶中含有n 1 公式 2n n 1 n 1 個空指標域。利用二叉鍊錶中的空指標域,存放指向該結點在某種遍歷次序下的前驅和後繼結點的指標 這種附加的指標稱為 線索 這種加上了線索的二叉鍊錶稱為線索鍊錶,相應的二叉樹稱為線索二叉樹 threaded binaryt...

二叉樹的建立 線索化以及遍歷

include define max 20 using namespace std typedef struct nodetbtnode 節點型別 tbtnode pre void thread tbtnode p else if pre rchild null else pre p thread ...

遍歷線索化二叉樹

常規的線索化方式 採用遞迴地呼叫的方式,判定條件是當前指標的左子樹是否為空 實現 public void midorder system.out.println this if this right null 對比 但是對二叉樹進行線索化之後,不存在空的左右指標,但是單獨設定每乙個指標的型別,故而條...