/ **
*
* [タイトル]
*バイナリツリーをファイルとして記録するプロセスは、バイナリツリー
のシリアル化と呼ばれ、ファイルの内容から元のバイナリツリーを再構築するプロセスは、バイナリツリーの逆シリアル化と呼ばれます。バイナリツリーのヘッドノードヘッドが与えられた場合、バイナリツリーノード値のタイプは
* 32ビット整数として知られています。バイナリツリーのシリアル化スキームを設計し、コードで実装してください。
* [ソリューション]
*シリアライゼーションとデシリアライゼーションは、プレオーダートラバーサルによって実現されます。
*最初に、プレオーダートラバーサルでのシリアル化プロセスを紹介します。最初に、シリアル化された結果の文字列がstrであり、最初はstr = ""であると想定します。
*最初にバイナリツリーをトラバースし、nullノードが検出された場合は、「#!」を追加します。strの終わりに、「#」はノードが空であることを意味します。
*ノード値は存在しません。「!」は値の終わりを意味します。空でないノードに、ノード値が3であると想定して
、* strの最後に「3!」を追加します。
*
* @author雪itor
* @Slogan時計はまだ動いています。
* @関数はバイナリツリーをシリアル化します
*
* /
public class SerivalTree {
public static String servialTree(Node head){
if(head == null){
return "#!";
}
文字列res = head.value + "!";
res + = servialTree(head.left);
res + = servialTree(head.right);
解像度を返す;
}
public static void main(String [] args){
Node head = new Node(1);
左ノード=新しいノード(2);
ノード右=新しいノード(3);
head.right = right;
head.left = left;
文字列の結果= servialTree(head);
System.out.println(result);
}
}
クラスNode {
public int value;
公開ノード権。
パブリックノードが残っています。
public Node(int data){
this.value = data;
}
}