[DSA] Trees Traversal
![[DSA] Trees Traversal](https://cdn.hashnode.com/res/hashnode/image/upload/v1742313004863/92f3e1c5-9ba4-4197-b1bc-918829c2c3b6.png)
Giới thiệu
Trees Traversal (duyệt cây) là cách để lấy tất cả các node của cây. Không như các kiểu dữ liệu linear như linked list, array, queue, stack chỉ lấy dữ liệu theo một chiều, trees có thể lấy tất cả các node theo nhiều cách khác nhau.
Có 2 cách duyệt cây:
Depth First traversal (DFS)
Preorder traversal
Inorder traversal
Postorder traversal
Breadth First traversal (BFS)

Tiếp tục các đoạn code trong phần [DSA] Binary Search Trees ta tiến hành các cách duyệt cây nhị phân (Trees traversal)
Bread first traversal (BFS)

BFS() {
let data = [];
let queue = [];
let node = this.root;
queue.push(node);
while (queue.length) {
node = queue.shift();
data.push(node.value);
if (node.left) {
queue.push(node.left);
}
if (node.right) {
queue.push(node.right);
}
}
return data;
}
Depth first traversal
Preorder

DFSPreOrder() {
var data = [];
function traversal(node) {
data.push(node.value);
if (node.left) {
traversal(node.left);
}
if (node.right) {
traversal(node.right);
}
}
traversal(this.root);
return data;
}
Postorder

DFSPostOrder() {
var data = [];
function traversal(node) {
if (node.left) {
traversal(node.left);
}
if (node.right) {
traversal(node.right);
}
data.push(node.value);
}
traversal(this.root);
return data;
}
Inorder

DFSInOrder() {
var data = [];
function traversal(node) {
if (node.left) {
traversal(node.left);
}
data.push(node.value);
if (node.right) {
traversal(node.right);
}
}
traversal(this.root);
return data;
}
![[DSA] Graph Traversal](https://cdn.hashnode.com/res/hashnode/image/upload/v1752495638510/f2d535de-1f28-4b13-b471-8f408c7a9c72.webp)
![[DSA] Graphs](https://cdn.hashnode.com/res/hashnode/image/upload/v1750257831609/5d62aebd-3cd9-4ba9-9904-4e998b46d29c.png)
![[DSA] Hash table](https://cdn.hashnode.com/res/hashnode/image/upload/v1750167172887/8856c6d8-9d16-40e4-ab4f-e1e1dd9bae31.png)
![[Terraform] Xử lý khác biệt giữa Cloud và Terraform state](https://cdn.hashnode.com/res/hashnode/image/upload/v1744814931301/b9f73c31-ad88-45ab-9e16-ed347756ae59.png)
![[DSA] Binary Heaps, Priority Queue](https://cdn.hashnode.com/res/hashnode/image/upload/v1742485138726/04c206f5-8534-4345-9400-e5da61cda6dc.png)