5.1.1 Binary Tree Level Order Traversal
描述
Given a binary tree, return the level order traversal of its nodes’ values. (ie, from le to right, level by
level).
For example: Given binary tree {3,9,20,#,#,15,7},
3
/ \
9 20
/ \
15 7
return its level order traversal as:
[
[3],
[9,20],
[15,7]
]
5.1.2 Binary Tree Level Order Traversal II 描述 Given a binary tree, return the boom-up level order traversal of its nodes’ values. (ie, from le to right, level by level from leaf to root). For example: Given binary tree {3,9,20,#,#,15,7}, 3 / \ 9 20 / \ 15 7 return its boom-up level order traversal as: [ [15,7] [9,20], [3], ]
5.1.3 Binary Tree Zigzag Level Order Traversal 描述 Given a binary tree, return the zigzag level order traversal of its nodes’ values. (ie, from le to right, then right to le for the next level and alternate between). For example: Given binary tree 3,9,20,#,#,15,7, 3 / \ 9 20 / \ 15 7 return its zigzag level order traversal as: [ [3], [20,9], [15,7] ]
function printTree($bt,&$arr,$lev=0,$left=true) { if(false===is_array($arr[$lev])) $arr[$lev]=array(); if($left) { array_push($arr[$lev],$bt->key); }else{ array_unshift($arr[$lev],$bt->key); } if($bt->left!=null) printTree3($bt->left,$arr,$lev+1,!$left); if($bt->right!=null) printTree3($bt->right,$arr,$lev+1,!$left); }
或者
function printTree2($bt) { $s=array($bt); $left=true; $arr=array(); $num=0; while(count($s)>0) { $arr[$num]=array(); $g=array_shift($s); if($left) { array_push($arr[$num],$g->key); }else{ array_unshift($arr[$num],$g->key); } if($g->left!=null) array_push($tmp,$g->left); if($g->right!=null) array_push($tmp,$g->right); $num++; $left=$left?false:true; } return $arr; }