面试题二十六:树的子结构
判断B树是否是A树的子结构
- 遍历A树,寻找和B树根节点一样的节点
- 找到后,判断是否一样结构
boolean HasSub( BinaryTreeNode A, BinaryTreeNode B ){ boolean reu=false; if(a!=null && B!=null){ if( A.val == B.val ) reu=Dou( A,B); if( ! reu ){ reu=HasSub( A.Left ,B); } f( ! reu ){ reu=HasSub( A.Right,B); } } return reu; } boolean Dou( BinaryTreeNode A, BinaryTreeNode B ){ if( B==null) return true; if( A==null ) return false; if( A.val != B.val ) return false; return Dou(A.Left, B.Left)&&Dou( A.Right, B.Right); }
注意:在计算机中表示的小数都会有误差(double float),不能直接用==判断
如果两个值的差很小,如0,0000001,就可以认为相等
浪波激泥