
1. Overview
In this article, we will learn the preorder traversal of N-ary tree in Java. To learn more about other data structures, refer to these articles.
2. N-ary tree
The N-ary trees are a collection of nodes where each node is a data structure that comprises records and a list of references to its children. Every node store the address of its children.
The N-ary trees exhibit the following properties:
- Every node can have multiple child nodes
- The number of child nodes not known in advance.
Each node has the following 3 components:
- Data element: Stores any data in the node
- List of child nodes
A empty node is represented by the null pointer.
3. N-ary preorder traversal in Java
The Preorder traversal follows the below steps: 1. Visit the root node. 2. Traverse the left sub-tree such that preorder (left-subtree) 3. Traverse the right sub-tree such that preorder (right-subtree)
// Definition for a Node.
import java.util.*;
class Node {
public int val;
public List<Node> children = new ArrayList<Node>();
public Node() {}
public Node(int _val) {
val = _val;
}
public Node(int _val, List<Node> _children) {
val = _val;
children = _children;
}
};
public class Solution {
public static void main(String args[]) {
Node five = new Node();
five.val = 5;
Node six = new Node();
six.val = 6;
List<Node> children = new ArrayList<Node>();
children.add(five);
children.add(six);
Node three = new Node(3, children);
Node two = new Node();
two.val = 2;
Node four = new Node();
four.val = 6;
List<Node> rootChild = new ArrayList<Node>();
rootChild.add(three);
rootChild.add(two);
rootChild.add(four);
Node root = new Node(1, rootChild);
System.out.println(preorder(root));
}
public static List<Integer> preorder(Node root) {
return traverse(new ArrayList<Integer>(), root);
}
private static List<Integer> traverse(List<Integer> output, Node node) {
if (node == null) return output;
output.add(node.val);
for (Node child: node.children) {
traverse(output, child);
}
return output;
}
}
4. Conclusion
To sum up, we have learned the preorder traversal of the N-ary tree in Java.