Java實現線索二叉樹及中序遍歷

2021-09-12 08:59:17 字數 1158 閱讀 9607

線索二叉樹

含義:可以通過充分利用二叉樹種的空指標域來存放在某種方式遍歷下的前驅指標和後繼指標,我們把指向前驅和後繼的指標稱為線束,加上線索的二叉樹稱為線索二叉樹。

node定義

比普通的節點多出來兩個bool型別,用來指示左右指標是指向子節點還是線索。

public

static

class

node

}

構建線性二叉樹

1、在遍歷節點時,利用乙個prenode來儲存上乙個遍歷的節點

2、對二叉樹進行中序遍歷,將所有節點的右子節點為空的指標指向它的後繼節點(prenode.right=node)。

3、將所有節點的左子節點為空的指標域指向它的前繼節點(node.left=prenode)。

程式

package tree;

public class threadbinarytree

} //線索化時記錄乙個節點

private node prenode;

//通過陣列構造乙個二叉樹

public node createbinarytree(stringarray,int index)

return node; }

//中序線索化二叉樹

void inthreadorder(node node)

//處理左子樹

inthreadorder(node.left);

//左指標為空,將左指標指向前驅節點

if(node.left==null)

//前乙個節點的後繼節點指向當前節點

if(prenode!=null && prenode.right==null)

prenode=node;

//處理右子樹

inthreadorder(node.right);

} //中序遍歷線索二叉樹,按照後繼方式遍歷

public void inthreadlist(node node)

while (node!=null)

else

} }

}}

中序線索二叉樹

就是在中序遍歷的時候加上線索,為了區分線索和孩子,要多加兩個標誌變數ltag,rtag如果標誌為true就表明是線索,如果為false就表示孩子 一般規定是將做指標為空的指標域用來存放直接前驅 將有指標為空的指標域用來存放直接後繼 當然如果不為空的話就不會用來存放前後繼,而是孩子了 意思就是存放前繼...

二叉樹中序線索

我先說一說 每個 節點 那 五個格 的資料 的含義中間拿乙個是儲存資料的。從左向右 第乙個 和 第五個 是指標,具體指向什麼 取決於第二個 和 第四個的值 第二個 如果是零,實線表示,則 第乙個指向的是 左孩子 第二個 如果是1,虛線表示,則 第乙個 指向的是 在中序遍歷次序下 該節點的前驅 即前乙...

中序線索二叉樹

對於一顆有n個節點的二叉樹,每個節點有2個指標域,共2n個指標域,使用n 1個指標域,二叉線索樹便是將剩下的n 1個指標域也利用起來。在普通二叉樹中,我們僅知道乙個節點的左右孩子,並不知道它的直接前驅節點和直接後驅節點,若能知道它的前驅節點和後去節,便可以將這個資料結構進行遍歷,可極大的提高效率。二...