输出根结点到叶子结点路径 | 递归 栈

已知一棵二叉树链式存储,请设计一个算法,输出根结点 到每个叶子节点的路径。

typedef struct {
  ElemType data;
  struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;

void path(BiTree T){
  if(T){
  stack[top]=T->data;
  ++top;
  if(p->lchild==NULL&&p->rchild==NULL){ 
   for(int i=0,i<top,++i){
     printf("%d",stack[i]);
   }
  }
      path(T->lchild);
      path(T->rchild);
   --top;
}

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
你可以使用归的方式来输出所有根点到叶子结点的路径及其路径长度。下面是一个示例的Java代码: ```java class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int val) { this.val = val; this.left = null; this.right = null; } } public class RootToLeafPaths { public static void printRootToLeafPaths(TreeNode root) { int[] path = new int[1000]; // 用于存储路径 printPaths(root, path, 0); } private static void printPaths(TreeNode node, int[] path, int pathLen) { if (node == null) { return; } // 将当前点添加到路径中 path[pathLen] = node.val; pathLen++; // 如果是叶子结点,则输出路径路径长度 if (node.left == null && node.right == null) { printArray(path, pathLen); } else { // 归处理左子树和右子树 printPaths(node.left, path, pathLen); printPaths(node.right, path, pathLen); } } private static void printArray(int[] path, int pathLen) { for (int i = 0; i < pathLen; i++) { System.out.print(path[i] + " "); } System.out.println(" - Path Length: " + pathLen); } public static void main(String[] args) { TreeNode root = new TreeNode(1); root.left = new TreeNode(2); root.right = new TreeNode(3); root.left.left = new TreeNode(4); root.left.right = new TreeNode(5); printRootToLeafPaths(root); } } ``` 在上面的示例代码中,`TreeNode` 类表示树的点,`printRootToLeafPaths` 方法用于调用归函数 `printPaths` 来输出路径,`printPaths` 方法会根据当前点的情况进行归调用或输出路径,`printArray` 方法用于输出路径及其长度。 你可以根据实际需求进行修改和适配。运行上述代码,你将会得到输出果,包括所有根点到叶子结点的路径及其路径长度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值