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