두 갈래 나무가 층층이 다니고, 층층이 다니면서 두 갈래 나무가 완전한 두 갈래 나무인지 아닌지를 판단한다
// , null
// ,
public static void levelOrderTraversal(TreeNode root) {
//if (root == null) {
// return;
//}
Queue queue = new LinkedList<>();
queue.add(root);
while (!queue.isEmpty()) {
TreeNode front = queue.poll();
System.out.println(front.val);
if (front.left != null) {
queue.add(front.left);
}
if (front.right != null) {
queue.add(front.right);
}
}
}
//
//
private static class Element{
TreeNode node;
int level;
//
}
public List> levelOrder(TreeNode root){
List> retList=new LinkedList<>();
if (root == null) {
return retList;
}
Queue queue = new LinkedList<>();
Element e=new Element();
e.node=root;
e.level=0;
queue.add(e);
while(!queue.isEmpty()){
Element front = queue.poll();
if(front.level==retList.size()){
retList.add(new ArrayList<>());
}
retList.get(front.level).add(front.node.val);
if (front.node.left != null) {
Element l = new Element();
l.node = front.node.left;
l.level = front.level + 1;
queue.add(l);
}
if (front.node.right != null) {
Element l = new Element();
l.node = front.node.right;
l.level = front.level + 1;
queue.add(l);
}
}
return retList;
}
//
public boolean isComplete(TreeNode root){
Queue queue = new LinkedList<>();
queue.add(root);
//
while(true){
TreeNode front=queue.poll();
if(front==null){
break;
}
queue.add(front.left);
queue.add(front.right);
}
while (!queue.isEmpty()){
TreeNode node =queue.poll();
if(node!=null){
return false;
}
}
return true;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.