java 获取叶子节点_java遍历树,并得到每条根到叶子节点的路径
时间: 2024-01-28 22:02:44 浏览: 205
可以使用递归来遍历树,并得到每条根到叶子节点的路径。以下是一个简单的示例代码:
```java
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
public class BinaryTreePaths {
public List<String> binaryTreePaths(TreeNode root) {
List<String> paths = new ArrayList<>();
if (root == null) {
return paths;
}
getPath(root, "", paths);
return paths;
}
private void getPath(TreeNode node, String path, List<String> paths) {
// 如果是叶子节点,将路径加入到路径列表中
if (node.left == null && node.right == null) {
paths.add(path + node.val);
return;
}
// 如果不是叶子节点,继续遍历左右子树
if (node.left != null) {
getPath(node.left, path + node.val + "->", paths);
}
if (node.right != null) {
getPath(node.right, path + node.val + "->", paths);
}
}
}
```
在上面的代码中,我们定义了一个 `TreeNode` 类表示树节点,其中 `val` 表示节点的值,`left` 和 `right` 分别表示左子树和右子树。我们还定义了一个 `BinaryTreePaths` 类,其中有一个 `binaryTreePaths` 方法用于获取每条根到叶子节点的路径。在 `binaryTreePaths` 方法中,我们首先判断根节点是否为空,如果为空则直接返回一个空的路径列表。接下来调用 `getPath` 方法,该方法用于递归遍历整棵树。如果当前节点是叶子节点,将路径加入到路径列表中,否则继续遍历左右子树。在遍历左右子树时,需要将当前节点的值加入到路径中,并用箭头隔开。
使用示例代码:
```java
TreeNode root = new TreeNode(1);
root.left = new TreeNode(2);
root.right = new TreeNode(3);
root.left.right = new TreeNode(5);
BinaryTreePaths solution = new BinaryTreePaths();
List<String> paths = solution.binaryTreePaths(root);
for (String path : paths) {
System.out.println(path);
}
```
输出结果:
```
1->2->5
1->3
```
阅读全文