두 갈래 나무의 선착순 (귀속과 비귀속), 중착순 (귀속과 비귀속), 후착순 (비귀속) 및 차원 자바 구현
4850 단어 LetCode 퀴즈
public List preorderTraversal(TreeNode root)
{ //
List list = new ArrayList();
PreOrderTraversal(root,list);
return list;
}
public void PreOrderTraversal(TreeNode root,List list)
{
if(root == null)
return;
list.add(root.val);
if(root.left != null)
PreOrderTraversal(root.left,list);
if(root.right != null)
PreOrderTraversal(root.right,list);
}
두 갈래 나무는 먼저 순서대로 옮겨다니며 비귀속 실현:
public static List PreOrderTree(TreeNode root)
{
List list = new ArrayList();
if(root == null)
return list;
Stack stack = new Stack<>();
TreeNode pCur = root;
while(pCur != null || !stack.isEmpty())
{
list.add(pCur.val);
stack.push(pCur);
pCur = pCur.left;
while(pCur == null && !stack.isEmpty())
{
pCur = stack.pop();
pCur = pCur.right;
}
}
return list;
}
두 갈래 나무에서 순서를 옮겨다니며 귀속 실현:
public List inorderTraversal(TreeNode root)
{
Stack stack = new Stack();
List list = new ArrayList();
inOrderTraversal(root,stack,list);
return list;
}
public void inOrderTraversal(TreeNode root,Stack stack,List list)
{
if(root == null)
return;
stack.push(root); //
if(root.left != null)
inOrderTraversal(root.left,stack,list); //
list.add(stack.pop().val); // , , list
if(root.right != null) //
inOrderTraversal(root.right,stack,list);
}
두 갈래 나무의 중순으로 옮겨다니며 비귀속 실현:
public static List InOrderTree(TreeNode root)
{
List list = new ArrayList<>();
if(root == null)
return list;
Stack stack = new Stack<>();
TreeNode pCur = root;
while(pCur != null || !stack.isEmpty())
{
stack.push(pCur);
pCur = pCur.left;
while(pCur == null && !stack.isEmpty())
{
pCur = stack.peek().right;
list.add(stack.pop().val);
}
}
return list;
}
두 갈래 나무의 뒷순서가 반복되고 비귀속 실현:
public static List PostOrderTree(TreeNode root)
{
List list = new ArrayList<>();
if(root == null)
return list;
Stack stack = new Stack<>();
Boolean flag = false; //
TreeNode pCur = root;
TreeNode temp = null;
while(pCur != null)
{
stack.add(pCur);
pCur = pCur.left;
if(pCur == null)
{
flag = true;
temp = null;
while(!stack.isEmpty() && flag == true)
{
pCur = stack.peek();
if(pCur.right == temp || pCur.right == null)
{
list.add(pCur.val);
temp = stack.pop();
}
else
{
pCur = pCur.right;
flag = false;
}
}
if(stack.isEmpty())
return list;
}
}
return list;
}
두 갈래 나무의 차원 반복 실현:
public ArrayList> levelOrder(Node root) //
{
ArrayList> list = new ArrayList<>();
if(root == null)
return list;
Queue queue = new LinkedList<>();
queue.add(root);
while (!queue.isEmpty())
{
int levelNum = queue.size();
ArrayList levelList = new ArrayList<>();
for(int i = 0; i < levelNum; i++)
{
Node temp = queue.poll();
levelList.add(temp.val);
if(temp.children != null)
for(Node ele : temp.children)
queue.add(ele);
}
list.add(levelList);
}
return list;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
두 갈래 나무의 선착순 (귀속과 비귀속), 중착순 (귀속과 비귀속), 후착순 (비귀속) 및 차원 자바 구현두 갈래 나무의 순서가 반복되고 귀속 실현: 두 갈래 나무는 먼저 순서대로 옮겨다니며 비귀속 실현: 두 갈래 나무에서 순서를 옮겨다니며 귀속 실현: 두 갈래 나무의 중순으로 옮겨다니며 비귀속 실현: 두 갈래 나무의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.