如何使用Java函数实现树的遍历
发布时间:2023-06-26 18:04:40
在Java中,树可以通过递归来遍历,可以使用以下三种遍历方式:前序遍历,中序遍历和后序遍历。
一、前序遍历
前序遍历顺序为 根节点 -> 左子树 -> 右子树。
示例代码
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
public class PreorderTraversal {
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> list = new ArrayList<>();
preorder(root, list);
return list;
}
public void preorder(TreeNode root, List<Integer> list) {
if(root != null) {
list.add(root.val);
preorder(root.left, list);
preorder(root.right, list);
}
}
}
二、中序遍历
中序遍历顺序为 左子树 -> 根节点 -> 右子树。
示例代码
public class InorderTraversal {
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> list = new ArrayList<>();
inorder(root, list);
return list;
}
public void inorder(TreeNode root, List<Integer> list) {
if(root != null) {
inorder(root.left, list);
list.add(root.val);
inorder(root.right, list);
}
}
}
三、后序遍历
后序遍历顺序为 左子树 -> 右子树 -> 根节点。
示例代码
public class PostorderTraversal {
public List<Integer> postorderTraversal(TreeNode root) {
List<Integer> list = new ArrayList<>();
postorder(root, list);
return list;
}
public void postorder(TreeNode root, List<Integer> list) {
if(root != null) {
postorder(root.left, list);
postorder(root.right, list);
list.add(root.val);
}
}
}
需要注意的是,在使用递归遍历树时,需要考虑空节点的情况,以避免空指针异常。同时,为了更好地打印结果,我们可以把结果存储在List中返回。
