google voice 打出电话,还会扣手机本身的费用么?# PDA - 掌中宝
j*l
1 楼
如何序列化一棵常规二叉树(不一定是BST)
方法一:
先序(中序或者后序)遍历这棵二叉树,对于空的左右孩子,也要输出空格或者某种特
殊字符作为delimiter,输出的序列就是序列化的结果
例如先序遍历输出
[email protected]@[email protected]@@[email protected]@@
其中@表示空格字符
然后可以用递归的方式按先序(中序或者后序)序列建立二叉树(反序列化)
PROC crt_bt_pre(VAR bt:bitreptr)
read a char from the sequence, store it in ch;
IF ch = ' ' THEN bt: = NIL
ELSE [
new(bt);
bt^.data = ch;
crt_bt_pre(bt^.lchild);
crt_bt_pre(bt^.rchild)
]
ENDP
方法二:
利用如下原理
1) 已知一棵二叉树的先序序列和中序序列,可以唯一地重构这棵二叉树
2) 已知一棵二叉树的中序序列和后序序列,可以唯一的重构这棵二叉树
这样就可以输出先序和中序序列(或者中序和后序序列)作为序列化的结果
如果问起如何重构,比如知道先序序列和中序序列,则
从先序序
方法一:
先序(中序或者后序)遍历这棵二叉树,对于空的左右孩子,也要输出空格或者某种特
殊字符作为delimiter,输出的序列就是序列化的结果
例如先序遍历输出
[email protected]@[email protected]@@[email protected]@@
其中@表示空格字符
然后可以用递归的方式按先序(中序或者后序)序列建立二叉树(反序列化)
PROC crt_bt_pre(VAR bt:bitreptr)
read a char from the sequence, store it in ch;
IF ch = ' ' THEN bt: = NIL
ELSE [
new(bt);
bt^.data = ch;
crt_bt_pre(bt^.lchild);
crt_bt_pre(bt^.rchild)
]
ENDP
方法二:
利用如下原理
1) 已知一棵二叉树的先序序列和中序序列,可以唯一地重构这棵二叉树
2) 已知一棵二叉树的中序序列和后序序列,可以唯一的重构这棵二叉树
这样就可以输出先序和中序序列(或者中序和后序序列)作为序列化的结果
如果问起如何重构,比如知道先序序列和中序序列,则
从先序序