如何在Java中打印二叉树的叶节点
时间:2020-02-23 14:34:22 来源:igfitidea点击:
算法
计算叶节点数量的步骤是:
- 如果节点为null,则返回0
- 如果ercounterd叶节点(即node.left为null和node.right为null)然后打印节点。
- 递归访问叶子子树和右子树。
递归的代码将是:
//Recursive Solution
//print leaf nodes
public static void printLeafNodes(TreeNode node) {
if(node==null)
return;
if(node.left == null && node.right == null) {
System.out.printf("%d ",node.data);
}
printLeafNodes(node.left);
printLeafNodes(node.right);
}
示例:二叉树:
允许创建用于计算叶节点数的Java程序:
package org.igi.theitroad.binarytree;
public class BinaryTreePrintLeafNodes {
public static class TreeNode
{
int data;
TreeNode left;
TreeNode right;
TreeNode(int data)
{
this.data=data;
}
}
//Recursive Solution
//print leaf nodes
public static void printLeafNodes(TreeNode node) {
if(node==null)
return;
if(node.left == null && node.right == null) {
System.out.printf("%d ",node.data);
}
printLeafNodes(node.left);
printLeafNodes(node.right);
}
public static void main(String[] args)
{
//Creating a binary tree
TreeNode rootNode=createBinaryTree();
System.out.println("Printing leaf nodes in binary tree :");
printLeafNodes(rootNode);
}
public static TreeNode createBinaryTree()
{
TreeNode rootNode =new TreeNode(40);
TreeNode node20=new TreeNode(20);
TreeNode node10=new TreeNode(10);
TreeNode node30=new TreeNode(30);
TreeNode node60=new TreeNode(60);
TreeNode node50=new TreeNode(50);
TreeNode node70=new TreeNode(70);
TreeNode node5=new TreeNode(5);
TreeNode node55=new TreeNode(55);
rootNode.left=node20;
rootNode.right=node60;
node20.left=node10;
node20.right=node30;
node60.left=node50;
node60.right=node70;
node10.left=node5;
node50.right=node55;
return rootNode;
}
}
运行上面的程序,我们将获取以下输出:
Printing leaf nodes in binary tree : 5 30 55 70

