f(b)=0当b=null其他情况f(b)=f(b.lchild)+f(b.rchild)+11/递归求解public static int NodeCount4(BTreeclass bt)(return NodeCount41(bt.b);7private static int NodeCount4i(BTNode<Character> t){ if (t==null)//空树结点个数为0return o;elsereturn(NodeCount41(t.lchild)+NodeCount41(t.rchild)+1);16/49
public static int NodeCount4(BTreeClass bt) //递归求解 { return NodeCount41(bt.b); } private static int NodeCount41(BTNode<Character> t) { if (t==null) return 0; //空树结点个数为0 else return(NodeCount41(t.lchild)+NodeCount41(t.rchild)+1); } f(b)=0 当b=null f(b)=f(b.lchild)+f(b.rchild)+1 其他情况 16/49
当b=nullf(b)=0其他情况f(b)=f(b.lchild)+f(b.rchild)+1其中“+1”相当于访问结点,放在不同位置体现不同的递归遍历思路,NodeCount41()方法是将“+1”放在最后,体现出后序遍历的算法思路。基于递归遍历思路和直接采用递归算法设计方法完全相同。实际上,当求解问题较复杂时,直接采用递归算法设计方法更加简单方便。17/49
f(b)=0 当b=null f(b)=f(b.lchild)+f(b.rchild)+1 其他情况 其中“+1”相当于访问结点,放在不同位置体现不同的递归遍历 思路,NodeCount41()方法是将“+1”放在最后,体现出后序遍历的 算法思路。 基于递归遍历思路和直接采用递归算法设计方法完全相同。 实际上,当求解问题较复杂时,直接采用递归算法设计方法更加 简单方便。 17/49