IT公司100题-tencent-打印所有高度为2的路径

本文介绍了一种方法,通过中序遍历二叉树来查找并打印所有到叶子节点长度为2的路径。代码示例展示了如何实现这一功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:

打印所有到叶子节点长度为2的路径

    10

   /  \

  6   16

  / \   / \

 4 8  14 18

  / \    / \    \

2  5  12 15 20

   /

  11

 

打印:

[10 6 8]

[6 4 2]

[6 4 5]

[16 14 15]

[16 18 20]

[14 12 11]

问题分析:

中序遍历树,每一个节点检查有无高度为2的路径

代码实现:

//IT27 start
private LinkedList<BSTreeNode> lst = new LinkedList<BSTreeNode>();
public void findDepthPath(int depth){
   findDepthPath(root, depth);
}
private void findDepthPath(BSTreeNode bsTreeNode, int expected){
   //inorder traversal tree
   //checkNode for each node
   checkNode(bsTreeNode, expected);
   if(bsTreeNode.left != null)
      findDepthPath(bsTreeNode.left, expected);
   if(bsTreeNode.right != null)
      findDepthPath(bsTreeNode.right, expected);
}
//Find all the expected depth leaf and print path
private void checkNode(BSTreeNode bsTreeNode, int expected){
   lst.addLast(bsTreeNode);
   if(isLeaf(bsTreeNode) && expected == 0) {
      System.out.println("Get: ");
      for (int i = 0; i < lst.size(); i++) {
         System.out.print(lst.get(i).value + " ");
      }
      System.out.println();
   }
   if(bsTreeNode.left != null && expected > 0) {
      checkNode(bsTreeNode.left, --expected);
      ++expected;
   }
   if(bsTreeNode.right != null && expected > 0) {
      checkNode(bsTreeNode.right, --expected);
      ++expected;
   }
   lst.removeLast();
}
//IT27 end


代码输出:

Get: 
10 6 8 
Get: 
6 4 2 
Get: 
6 4 5 
Get: 
16 14 15 
Get: 
16 18 20 
Get: 
14 12 11


转载于:https://my.oschina.net/jimmyhan/blog/598412

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值