l****i 发帖数: 2772 | 1 看到前面帖子里的面经,请教,Binary Tree Level Traversal有recursive的算法么? | f*******t 发帖数: 7549 | 2 你要的是这种?记得CC150上提到过
for (int level = 0; level <= maxLevel; level++)
printLevel(root, level); | m*****1 发帖数: 147 | 3 public ArrayList> levelOrder(TreeNode root) {
// Start typing your Java solution below
// DO NOT write main() function
ArrayList> array=new ArrayList>();
level(0,array,root);
return array;
}
public void level(int level,ArrayList> array,TreeNode
node){
if(node==null) return;
ArrayList list=null;
if(array.size()==level){
list=new ArrayList();
array.add(list);
}else{
list=array.get(level);
}
list.add(node.val);
level(level+1,array,node.left);
level(level+1,array,node.right);
} | d*******3 发帖数: 58 | 4 C++ version
void LevelTraverse(Node* root)
{
if(root == NULL)return;
vector v;
v.push_back(root);
int cur = 0;
int last =0;
while(cur < v.size())
{
last = v.size();
while(cur < last)
{
cout<data<
if(v[cur]->left !=NULL)v.push_back(v[cur]->left);
if(v[cur]->right != NULL)v.push_back(v[cur]->right);
cur++;
}
cout<
}
} |
|