二叉树
难点一:二叉树的存储
- C语言版
void CreateBiTree(BiTree &T) {
T = (BiTree)malloc(sizeof(BiTNode));
int data;
scanf("%d",&data);
if(data == -1) T = NULL;
if(T) {
T->data = data;
printf("输入%d节点的左子节点:\n",data);
CreatBiTree(T->lchild);
printf("输入%d节点的右子节点:\n",data);
CreatBiTree(T->rchild);
}
}
- Java语言版
public BiTree CreateBiTree() {
BiTree T = new BiTree(1);
BiTree T_l = new BiTree(2);
BiTree T_r = new BiTree(3);
BiTree T_l_l = new BiTree(4);
BiTree T_r_r = new BiTree(5);
T.lchild = T_l;
T.rchild = T_r;
T_l.lchild = T_l_l;
T_r.lchild = T_r_r;
return T;
}
System.out.print("先序遍历:");
BT.CreateBiTree().PreorderTraversal();
- 因为我们没有一个像数组一样的东西,储存到数据,导致我们只能像以上形式用。
- C语言版能行,是因为C有指针,而Java是引用。两者不完全一样。
- Java语言版改进,用队列来帮我们
在这里插入代码片
- Java语言版改进,用栈来帮我们
在这里插入代码片
难点二:二叉树的泛型
|