Índice
Travessia de pré-encomenda de uma árvore binária
Link do tópico de passagem de pré-encomenda
1. Use o código que retorna o valor do método
2. Um código cujo valor de retorno é nulo
Implementação não recursiva de travessia de pré-pedido (usando pilha)
1. Use o código que retorna o valor do método
2. Um código cujo valor de retorno é nulo
Travessia inorder de uma árvore binária
: Dado um nó raiz de uma árvore binária, retorne seu percurso em ordem.
Link do tópico de passagem inorder
1. Use o código que retorna o valor do método
2. Um código cujo valor de retorno é nulo
Implementação não recursiva de travessia em ordem (usando pilha)
1. Use o código que retorna o valor do método
2. Um código cujo valor de retorno é nulo
Travessia pós-ordem de uma árvore binária
Link do tópico de passagem pós-pedido
1. Use o código que retorna o valor do método
2. Um código cujo valor de retorno é nulo
Implementação não recursiva de travessia em ordem (usando pilha)
1. Use o código que retorna o valor do método
2. Um código cujo valor de retorno é nulo
Traversal (Traversal) refere-se a seguir uma determinada rota de pesquisa, a fim de fazer uma visita a cada nó da árvore uma vez e apenas uma vez para visitar a travessia de pré-pedido (Pré-encomenda Traversal também é chamada de travessia de pré-ordem) --- visita o nó raiz ---> subárvore esquerda da raiz ---> subárvore direita da raiz.
Traversal Inorder (Inorder Traversal) - a subárvore esquerda da raiz ---> o nó raiz ---> a subárvore direita da raiz.
Postorder Traversal (Postorder Traversal) - a subárvore esquerda da raiz ---> a subárvore direita da raiz ---> o nó raiz
Travessia de pré-encomenda de uma árvore binária
tema
: Fornece o nó raiz da árvore binária e retorna a passagem de pré-ordem root
dos valores de seus nós
Link do tópico de passagem de pré-encomenda
: https://leetcode.cn/problems/binary-tree-preorder-traversal/
código recursivo
1. Use o código que retorna o valor do método
class Solution {
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> ret = new ArrayList<Integer>();
if(root==null){
return ret;
}
ret.add(root.val);
List<Integer> leftTree=preorderTraversal(root.left);
ret.addAll(leftTree);
List<Integer> rightTree=preorderTraversal(root.right);
ret.addAll(rightTree);
return ret;
}
}
2. Um código cujo valor de retorno é nulo
// 前序遍历 根 左子树 右子树
public void preOrder(BTNode root) {
if (root == null) {
return;
}
System.out.print(root.value + " ");
preOrder(root.left);
preOrder(root.right);
}
Implementação não recursiva de travessia de pré-pedido (usando pilha)
1. Use o código que retorna o valor do método
class Solution {
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> ret = new ArrayList<>();
if (root == null) {
return ret;
}
TreeNode cur = root;
Deque<TreeNode> stack = new ArrayDeque<>();
while (cur != null || !stack.isEmpty()) {
while (cur != null) {
stack.push(cur);
//System.out.print(cur.val + " ");
ret.add(cur.val);
cur = cur.left;
}
TreeNode top = stack.pop();
cur = top.right;
}
return ret;
}
}
2. Um código cujo valor de retorno é nulo
class Solution {
public void preOrderNor(BTNode root) {
if (root == null) {
return;
}
BTNode cur = root;
Deque<BTNode> stack = new ArrayDeque<>();
while (cur != null || !stack.isEmpty()) {
while (cur != null) {
stack.push(cur);
System.out.println(cur.value + " ");
cur = cur.left;
}
BTNode top = stack.pop();
cur = top.right;
}
}
}
Travessia inorder de uma árvore binária
tema
: Dado o nó raiz de uma árvore binária root
, retorne seu percurso em ordem .
Link do tópico de passagem inorder
: https://leetcode.cn/problems/binary-tree-inorder-traversal/
código recursivo
1. Use o código que retorna o valor do método
class Solution {
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> ret = new ArrayList<>();
if (root == null) {
return ret;
}
List<Integer> leftTree = inorderTraversal(root.left);
ret.addAll(leftTree);
ret.add(root.val);
List<Integer> rightTree =inorderTraversal(root.right);
ret.addAll(rightTree);
return ret;
}
}
2. Um código cujo valor de retorno é nulo
// 中序遍历 左子树 根 右子树
public void inOrder(BTNode root) {
if (root == null) {
return;
}
inOrder(root.left);
System.out.print(root.value + " ");
inOrder(root.right);
}
Implementação não recursiva de travessia em ordem (usando pilha)
1. Use o código que retorna o valor do método
class Solution{
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> ret = new ArrayList<>();
if (root == null) {
return ret;
}
TreeNode cur = root;
Deque<TreeNode> stack = new ArrayDeque<>();
while (cur != null || !stack.isEmpty()) {
while (cur != null) {
stack.push(cur);
cur = cur.left;
}
TreeNode top = stack.pop();
ret.add(top.val);
cur = top.right;
}
return ret;
}
}
2. Um código cujo valor de retorno é nulo
class Solution{
public void inOrderNor(BTNode root) {
if (root == null) {
return;
}
BTNode cur = root;
Deque<BTNode> stack = new ArrayDeque<>();
while (cur != null || !stack.isEmpty()) {
while (cur != null) {
stack.push(cur);
cur = cur.left;
}
BTNode top = stack.pop();
System.out.println(top.value + " ");
cur = top.right;
}
}
}
Travessia pós-ordem de uma árvore binária
tema
: Dado o nó raiz de uma árvore binária root
, retorne a travessia pós-ordem dos valores de seus nós .
Link do tópico de passagem pós-pedido
: https://leetcode.cn/problems/binary-tree-postorder-traversal/
código recursivo
1. Use o código que retorna o valor do método
class Solution {
public List<Integer> postorderTraversal(TreeNode root) {
List<Integer> ret = new ArrayList<Integer>();
if(root==null){
return ret;
}
List<Integer> leftTree = postorderTraversal(root.left);
ret.addAll(leftTree);
List<Integer> rightTree = postorderTraversal(root.right);
ret.addAll(rightTree);
ret.add(root.val);
return ret;
}
}
2. Um código cujo valor de retorno é nulo
// 后序遍历
public void postOrder(BTNode root) {
if (root == null) {
return;
}
postOrder(root.left);
postOrder(root.right);
System.out.print(root.value + " ");
}
Implementação não recursiva de travessia em ordem (usando pilha)
1. Use o código que retorna o valor do método
class Solution{
public List<Integer> postorderTraversal(TreeNode root) {
List<Integer> ret = new ArrayList<>();
if (root == null) {
return ret;
}
TreeNode cur = root;
TreeNode prev = null;
Deque<TreeNode> stack = new ArrayDeque<>();
while (cur != null || !stack.isEmpty()) {
while (cur != null) {
stack.push(cur);
cur = cur.left;
}
TreeNode top = stack.peek();
if (top.right == null || top.right == prev) {
//System.out.println(top.value + " ");
ret.add(top.val);
stack.pop();
prev = top;
} else {
cur = top.right;
}
}
return ret;
}
}
2. Um código cujo valor de retorno é nulo
class Solution{
public void postOrderNor(BTNode root) {
if (root == null) {
return;
}
BTNode cur = root;
BTNode prev = null;
Deque<BTNode> stack = new ArrayDeque<>();
while (cur != null || !stack.isEmpty()) {
while (cur != null) {
stack.push(cur);
cur = cur.left;
}
BTNode top = stack.peek();
if (top.right == null || top.right == prev) {
System.out.println(top.value + " ");
stack.pop();
prev = top;
} else {
cur = top.right;
}
}
}
}
Flor completa ✿✿ヽ(°▽°)ノ✿✿