找到树结点的最末级节点 java
时间: 2023-09-03 10:08:19 浏览: 29
可以通过递归的方式来找到树结点的最末级节点。以下是一个Java代码示例:
```
public TreeNode findLastNode(TreeNode root) {
if (root == null) {
return null;
}
if (root.left == null && root.right == null) {
return root;
}
TreeNode leftLastNode = findLastNode(root.left);
TreeNode rightLastNode = findLastNode(root.right);
if (leftLastNode != null && rightLastNode != null) {
return root;
}
return (leftLastNode != null) ? leftLastNode : rightLastNode;
}
```
其中,TreeNode代表树的节点,left和right表示左子树和右子树;当左右子树都存在时,将当前节点设置为最末级节点。
相关问题
找到树结构结点的最末级节点 java代码
可以使用递归的方法来找到树结构中最末级节点的 java 代码,示例代码如下:
```
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
public TreeNode findLastNode(TreeNode root) {
// 如果根节点为空,则返回 null
if (root == null) {
return null;
}
// 如果当前节点是叶子节点,则直接返回当前节点
if (root.left == null && root.right == null) {
return root;
}
// 否则递归查找左子树和右子树的最末级节点
TreeNode leftLastNode = findLastNode(root.left);
TreeNode rightLastNode = findLastNode(root.right);
// 如果左子树和右子树都为空,则当前节点是最末级节点
if (leftLastNode == null && rightLastNode == null) {
return root;
}
// 如果左子树不为空,右子树为空,则返回左子树的最末级节点
if (leftLastNode != null && rightLastNode == null) {
return leftLastNode;
}
// 如果左子树为空,右子树不为空,则返回右子树的最末级节点
if (leftLastNode == null && rightLastNode != null) {
return rightLastNode;
}
// 如果左子树和右子树都不为空,则返回右子树的最末级节点
return rightLastNode;
}
```
以上代码在假设没有重复节点的情况下实现了找到二叉树结构的最末级节点。
java二叉树判断是否是末级节点
在Java中判断一棵二叉树的节点是否为末级节点可以通过递归的方式来实现。首先,定义一个递归函数来判断该节点是否为末级节点。如果节点为空,则返回false;如果节点的左右子节点都为空,则返回true,表示为末级节点;否则,递归判断左右子节点是否为末级节点。具体实现代码如下:
```
public class BinaryTree {
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int val) {
this.val = val;
}
}
public boolean isLeafNode(TreeNode node) {
if (node == null) {
return false;
}
if (node.left == null && node.right == null) {
return true;
}
return isLeafNode(node.left) && isLeafNode(node.right);
}
// 测试
public static void main(String[] args) {
BinaryTree tree = new BinaryTree();
TreeNode root = tree.new TreeNode(1);
root.left = tree.new TreeNode(2);
root.right = tree.new TreeNode(3);
root.left.left = tree.new TreeNode(4);
root.left.right = tree.new TreeNode(5);
root.right.left = tree.new TreeNode(6);
root.right.right = tree.new TreeNode(7);
System.out.println(tree.isLeafNode(root)); // false
System.out.println(tree.isLeafNode(root.left.left)); // true
}
}
```
上面的代码中,首先定义了一个内部类TreeNode表示二叉树的节点,然后定义了一个isLeafNode方法来判断节点是否为末级节点。在main方法中,创建了一棵二叉树并进行了测试,验证了isLeafNode方法的正确性。通过递归的方式,可以方便地判断一棵二叉树的节点是否为末级节点。