面试题二十六:树的子结构

判断B树是否是A树的子结构

  1. 遍历A树,寻找和B树根节点一样的节点
  2. 找到后,判断是否一样结构
  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,就可以认为相等

posted @ 2020-03-29 14:48  浪波激泥  阅读(181)  评论(0编辑  收藏  举报