更新時(shí)間:2018-12-19 來(lái)源:黑馬程序員 瀏覽量:
二叉樹(shù)是樹(shù)的特殊一種,在筆試中較為常見(jiàn),其具有如下特點(diǎn):
1、每個(gè)結(jié)點(diǎn)最多有兩顆子樹(shù),結(jié)點(diǎn)的度最大為2。
2、左子樹(shù)和右子樹(shù)是有順序的,次序不能顛倒。
3、即使某結(jié)點(diǎn)只有一個(gè)子樹(shù),也要區(qū)分左右子樹(shù)。
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;
public class Demo {
public String serialize(TreeNode root) {
if (root == null) return "";
StringBuilder encodedStr = new StringBuilder();
encode(root,encodedStr);
return encodedStr.substring(1).toString();
}
public void encode(TreeNode root,StringBuilder sb){
if (root == null){
sb.append(",#");
return;
}
sb.append(",").append(root.val);
encode(root.left,sb);
encode(root.right,sb);
}
public TreeNode deserialize(String data) {
if (data.length() == 0) return null;
Queuequeue = new LinkedList<>(Arrays.asList(data.split(",")));
return decode(queue);
}
public TreeNode decode(Queuequeue){
if (queue.isEmpty()) return null;
String cur = queue.poll();
if (cur.equals("#")) return null;
TreeNode root = new TreeNode(Integer.valueOf(cur));
root.left = decode(queue);
root.right = decode(queue);
return root;
}
}
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
首發(fā): http://java.itheima.com