在Java中的二叉树中打印从root到叶子的所有路径
时间:2020-02-23 14:35:31 来源:igfitidea点击:
在本教程中,我们将看到关于在Java中的二进制树中将来自root的所有路径打印到叶子。
下图将显示从root到叶子的所有路径:
算法:
打印从root到叶子的所有路径的步骤是:
- 如果节点为null,则返回0
- 将node.data放入数组和增量Len 1.
- 如果ercounterd叶节点(即node.left为null和node.right为null)然后打印阵列。
- 递归访问左子和右子树
递归的代码将是:
//Prints all paths to leaf public static void printAllPathsToLeaf(TreeNode node, int[] path, int len) { if ( node == null ) return; //storing data in array path[len] = node.data; len++; if(node.left == null && node.right == null) { //leaf node is reached printArray(path,len); return; } printAllPathsToLeaf(node.left, path, len); printAllPathsToLeaf(node.right, path, len); }
允许创建用于计算叶节点数的Java程序:
package org.igi.theitroad.binarytree; public class BinaryTreePrintAllPaths { public static class TreeNode { int data; TreeNode left; TreeNode right; TreeNode(int data) { this.data=data; } } //Prints all paths to leaf public static void printAllPathsToLeaf(TreeNode node, int[] path, int len) { if ( node == null ) return; //storing data in array path[len] = node.data; len++; if(node.left == null && node.right == null) { //leaf node is reached printArray(path,len); return; } printAllPathsToLeaf(node.left, path, len); printAllPathsToLeaf(node.right, path, len); } public static void main(String[] args) { //Creating a binary tree TreeNode rootNode=createBinaryTree(); System.out.println("Printing all paths from root to leaf :"); printAllPathsToLeaf(rootNode,new int[1000],0); } public static void printArray(int[] path,int len) { for (int i = 0; i < len; i++) { System.out.print(" "+path[i]); } System.out.println(); } 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 all paths from root to leaf : 40 20 10 5 40 20 30 40 60 50 55 40 60 70