如何在进行先序遍历时建立一个线索二叉树?(100分)

  • 主题发起人 主题发起人 huangyanming
  • 开始时间 开始时间
H

huangyanming

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在进行先序遍历时建立一个线索二叉树?
请举出例子,给出源码。
 
type
TTree = ^TNode;
TNode = record
Data: TData;
Left, Right: TTree;
LFlag, RFlag: Boolean
end;

procedure PrevOrd(Tree: TTree;
var PrevNode: TTree);
begin
if Tree=nil then
Exit;
if Tree^.Left=nil then
begin
Tree^.LFlag:=True;
Tree^.Left:=PrevNode
end
else
Tree^.LFlag:=False;
if PrevNode<>nil then
begin
if PrevNode^.Right=nil then
begin
PrevNode^.Right:=Tree;
PrevNode^.RFlag:=True
end
else
PrevNode^.RFlag:=False
end;

PrevNode:=Tree;
PrevOrd(Tree^.Left, PrevNode);
PrevOrd(Tree^.Right, PrevNode)
end;

LFlag=True表示Left指向前驱
LFlag=False表示Left指向左孩子。
右侧雷同。
 
对!建立的是前序线索二叉树,记得可以建中序的线索二叉树,有点忘了[:)]
 
后退
顶部