如何在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