Escolar Documentos
Profissional Documentos
Cultura Documentos
ATAI
1
Árvore Binária
2
Propriedades de uma Árvore Binária
altura no
0 1
1 2
2 4
3 8
1. h+1 # folhas 2h
2. h # nós internos 2h -1
3. 2h+1 # nós em T 2h+1 - 1
4. log(n+1)-1 altura de T (n-1)/2
3
Percurso Pre-ordem
Passos
1. Processar o nó
2. Percorrer em pre-ordem a sub-
árvore esquerda
3. Percorrer em pre-ordem a sub- A
árvore direira
4
Percurso Pos-ordem
Passos:
1. Percorrer em pos-ordem a sub-
árvore esquerda
2. Percorrer em pos-ordem a sub-
árvore direita
A
3. Processar o nó
5
Percurso In-ordem
Passos
1. Percorrer em in-ordem a sub-
árvore esquerda
2. Processar o nó
3. Percorrer em in-ordem a sub- A
árvore direita
6
Percorrer uma árvore de um modo iterativo
// algoritmos iterativo preOrder
7
Operações Recursivas
A maior parte das operação pode ser
implementada de um modo elegante
atravês do uso da recursividade
int height ( ) { return height(root); }
8
Uso de árvore de expressões
3*8+7
Percorrer a árvore binária:
• in-ordem
infix : 3*8+7
+
• pre-order
prefix : +*387
* 7 • post-order
postfix : 3 8 * 7 +
3 8
9
Árvore Binária
Implementação Estática
10
ADT BinaryTree
11
Árvore Binária
Implementação Dinâmica
/** Node of a binary tree */
public class BTNode implements Position {
private Object element;
private BTNode left, right, parent;
/** default constructor */
public BTNode() { }
/** constructor with parameters */
public BTNode (Object o, BTNode u, BTNode v, BTNode w) {
setElement(o);
setParent(u);
setLeft(v);
setRight(w);
}
public Object element() { return element; }
public void setElement (Object o) { element=o; }
public BTNode getLeft() { return left; }
public void setLeft(BTNode v) { left=v; }
public BTNode getRight() { return right; }
public void setRight(BTNode v) { right=v; }
public BTNode getParent() { return parent; }
public void setParent(BTNode v) { parent=v; }
}
12
Árvore Binária
Implementação Dinâmica
public class LinkedBinaryTree implements BinaryTree {
private Position root; // reference to the root
private int size; // number of nodes
public LinkedBinaryTree() {
root = new BTNode(null,null,null,null);
size = 0;
}
13
Árvore Binária
Implementação Dinâmica
public Position root() { return root; }
14