n叉树的先序遍历,并给出测试例。用java语言编写
时间: 2024-02-15 22:01:36 浏览: 18
以下是n叉树的先序遍历的Java代码实现:
```java
class TreeNode {
int val;
List<TreeNode> children;
TreeNode(int val) {
this.val = val;
this.children = new ArrayList<>();
}
}
public class NaryTreePreorderTraversal {
public List<Integer> preorder(TreeNode root) {
List<Integer> res = new ArrayList<>();
if (root == null) {
return res;
}
Stack<TreeNode> stack = new Stack<>();
stack.push(root);
while (!stack.isEmpty()) {
TreeNode curr = stack.pop();
res.add(curr.val);
for (int i = curr.children.size() - 1; i >= 0; i--) {
stack.push(curr.children.get(i));
}
}
return res;
}
}
```
以下是一个测试例:
```java
public static void main(String[] args) {
TreeNode root = new TreeNode(1);
TreeNode node2 = new TreeNode(2);
TreeNode node3 = new TreeNode(3);
TreeNode node4 = new TreeNode(4);
TreeNode node5 = new TreeNode(5);
TreeNode node6 = new TreeNode(6);
root.children.add(node2);
root.children.add(node3);
root.children.add(node4);
node3.children.add(node5);
node3.children.add(node6);
NaryTreePreorderTraversal solution = new NaryTreePreorderTraversal();
List<Integer> res = solution.preorder(root);
System.out.println(res); // Output: [1, 2, 3, 5, 6, 4]
}
```
在这个测试例中,我们创建了一个n叉树,并对其进行先序遍历,结果为[1, 2, 3, 5, 6, 4]。