1、利用遞歸的方式獲取樹的前序遍歷結(jié)果
//獲取樹的前序遍歷
public static String preTraver(TreeNode root){
if (root!=null) {
re += root.val;
if (root.left != null)
preTraver(root.left);
if (root.right != null)
preTraver(root.right);
}
return re;
}
2琅束、 利用遞歸的方式獲取樹的中序遍歷結(jié)果
//獲取樹的中序遍歷
public static String medTraver(TreeNode root){
if (root!=null) {
if (root.left != null)
medTraver(root.left);
re += root.val;
if (root.right != null)
medTraver(root.right);
}
return re;
}
3诈嘿、利用遞歸的方式獲取樹的后序遍歷結(jié)果
//獲取樹的后序遍歷
public static String aftTraver(TreeNode root){
if (root!=null) {
if (root.left != null)
preTraver(root.left);
if (root.right != null)
preTraver(root.right);
re += root.val;
}
return re;
}
4、利用隊列實現(xiàn)層次遍歷
//獲取樹的層次遍歷
public static String levelTraver(TreeNode root){
Queue<TreeNode> queue = new ArrayDeque<TreeNode>();
TreeNode node;
if (root!=null)
queue.offer(root);
while (!queue.isEmpty()){
node=queue.poll();
re+=node.val;
if (node.left!=null)
queue.offer(node.left);
if (node.right!=null)
queue.offer(node.right);
}
return re;
}
0 ??? 1 ???2 ??? 3 ???4 ??? 5 ???6 ??? 7 ???8 ??? 9 ???10 ??? 11 ???12 ??? 13 ???14 ??? 15 ???16 ??? 17 ???
18 ??? 19 ???20 ??? 21 ???22 ??? 23 ???24 ??? 25 ???26 ??? 27 ???28 ??? 29 ???30 ??? 31 ???32 ??? 33 ???34 ??? 35 ???
36 ??? 37 ???38 ??? 39 ???40 ??? 41 ???42 ??? 43 ???44 ??? 45 ???
<center>Coding Blog ??? Github Blog </center>