二叉树创建: 1.是否可以用二叉树遍历的方式来创建二叉树?
1. 先序遍历
2. 先序遍历不能唯一确定1二叉树的结构,两颗不同的二叉树却可能有相同的先根序列。原因是:二叉树中,可能有其左指针和/或右指针为空的结点,先序遍历不包含这方面的信息,由此需要在先序遍历中加入特殊的符号以表示空指针的位置,这里不妨使用“#”号表示空指针位置。
3. 递归算法:create bin tree (简记为CBT)
4. 以根指针t为输入参数,以包含空指针信息的先根序列为输入序列。当输入“#”字符时,将其初始化为一个空指针;否则生成一个新结点,并初始化其父结点的左右指针。
算法 CBT(tostop 。 t)
构造以结点t为根的二叉树;tostop=“#”
CBT1.【读数据】
read (ch) //顺序读入序列一个符号
CBT2.【ch= tostop?]
if ch = tostop then (t<---nullptr /return )
else
t<=avail .
data(t)<--ch.)
CBT3.[构造左子树】
CBT (tostop.left(t)).
CBT4.[构造右子树]
CBT (tostop. right(t)).