二叉树:Node类有方法:
Node getLeftChild()
Node getRightChild()
int getLeafNumber()
int getDepth() (叶子深度是1,向上依次加1)
boolean isleaf()Tree类有方法:
Node getParent()
Node getRoot()想得到某个节点左面的所有叶子数目。(比如5叶子的一棵树,第四个叶子左面叶子数目就是3,第四个叶子的父节点左面叶子数目也是3)求可用的逻辑?谢谢啦
解决方案 »
- JTable连接数据库非要用数组保存数据吗?
- 请教一个关于线程的问题
- 举报!!!hahe7788用户倒分加剽窃!详情请见另一100分贴!
- 求教试题生成器【跪求】
- java.lang.NoClassDefFoundError错误,高手请进.高分相送!!!
- 在JAVA里如何实现读取win CPU序列号
- 做一个jtable, 如何做到 使行高随鼠标托动变化?谢谢
- 大家讨论一下JNI的效率和稳定性的问题吧
- 在win2000命令行中,怎么在进入c:\j2sdk1.4.1_02
- Manifest 到底有什么作用呢?必须吗?
- 求助数独解算器问题——我的回溯法问题到底出在哪了?
- poi能读写大于100m的文件的么
伪代码如下:private static int total=0;//某个节点左面的所有叶子数目
static void leftLeaf(Node root,Node someNode)
//在树根root表示的二叉树中统计结点someNode左面的所有叶子数目
{
if( root==null ) return;
leftLeaf(root.getLeftChild() );//统计左边叶子数目
if( root.isleaf() && root != someNode ) total++;//找到一个左边叶子
if(root == someNode ) return;//从someNode结点开始,下边就不再统计了
//否则:还没有统计到someNode
leftLeaf(root.getRightChild());//统计someNode结点的左边结点root其它的叶子数目
}
将:leftLeaf(root.getLeftChild() );改为:
leftLeaf(root.getLeftChild(),someNode );
及
leftLeaf(root.getRightChild());改为:
leftLeaf(root.getRightChild() ,someNode );
最终代码:伪代码如下: private static int total=0;//某个节点左面的所有叶子数目
static void leftLeaf(Node root,Node someNode)
//在树根root表示的二叉树中统计结点someNode左面的所有叶子数目
{
if( root==null ) return;
leftLeaf(root.getLeftChild() ,someNode );//统计左边叶子数目
if( root.isleaf() && root != someNode ) total++;//找到一个左边叶子
if(root == someNode ) return;//从someNode结点开始,下边就不再统计了
//否则:还没有统计到someNode
leftLeaf(root.getRightChild() ,someNode );//统计someNode结点的左边结点root其它的叶子数目
}