在Java中如何输出二叉树的结点和深度呢?
public class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) {val = x;}}public void printTree(TreeNode node) {if (node == null) {return;}// 输出当前结点System.out.println("结点值为:" + node.val);// 如果左子树不为空,则输出左子树的结点和深度if (node.left != null) {System.out.println("左子树结点值为:" + node.left.val + ",深度为:" + getDepth(node.left));printTree(node.left);}// 如果右子树不为空,则输出右子树的结点和深度if (node.right != null) {System.out.println("右子树结点值为:" + node.right.val + ",深度为:" + getDepth(node.right));printTree(node.right);}}public int getDepth(TreeNode node) {if (node == null) {return 0;}int leftDepth = getDepth(node.left);int rightDepth = getDepth(node.right);return Math.max(leftDepth, rightDepth) + 1;}以上代码定义了一个二叉树结点的数据结构,并提供了两个方法来输出二叉树的结点和深度。
具体实现中:
- printTree()方法首先输出当前结点的值,然后递归输出左子树和右子树,直到整棵树被遍历完。
- getDepth()方法计算当前结点的深度,如果结点为空返回0,否则返回左子树和右子树深度的最大值再加上1。
利用上述代码,我们可以非常简单地输出一棵二叉树的结点和深度,从而更加深入地理解这种数据结构。