请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师,这个解题思路可以吗

ArrayList<ArrayList > Print(TreeNode pRoot) {
ArrayList<ArrayList> arrayLists = new ArrayList<ArrayList>();
if (pRoot==null) {
return arrayLists;
}
Queue queue = new LinkedList();
queue.add(pRoot);
while (!queue.isEmpty()) {
ArrayList arrayList = new ArrayList();
int count = queue.size();
for (int i = 0; i < count; i++) {
if (queue.peek().left!=null) {
queue.add(queue.peek().left);
}
if (queue.peek().right!=null) {
queue.add(queue.peek().right);
}
arrayList.add(queue.poll().val);
}
arrayLists.add(arrayList);
}
return arrayLists;
}

正在回答 回答被采纳积分+3

2回答

liuyubobobo 2019-09-28 13:16:46

抱歉,我没有理解你的问题,具体是指什么思路?


为什么你要问可以吗?你的疑问的点在哪里?


另外,对于 Leetcode 上的问题,如果附代码的话,请附上可以直接在 Leetcode 上运行的代码,谢谢。

0 回复 有任何疑惑可以回复我~
提问者 慕数据2503897 2019-09-28 12:26:44

看了老师的代码,好像是给每个节点加了行的标示

0 回复 有任何疑惑可以回复我~
  • 你应该先把节点对应的数字加到list再去取左右节点
    class Solution {
        public List<List<Integer>> levelOrder(TreeNode root) {
            
           Deque<TreeNode> q = new LinkedList<TreeNode>();
            List<List<Integer>> result=new ArrayList<List<Integer>>();
            if(root==null)
            return result;
            q.add(root);
            while(!q.isEmpty()){
                List<Integer> list=new ArrayList<>();
                int i=q.size();
                for(int j=0;j<i;j++){
                    TreeNode t=q.poll();
                    list.add(t.val);
                     if(t.left!=null)
                q.add(t.left);
                if(t.right!=null)
                q.add(t.right);
                }
                result.add(list);
              
               
            }
            return result;
            
        }
       
    }
    回复 有任何疑惑可以回复我~ 2019-11-22 16:47:25
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信