首页 > 编程知识 正文

阿里巴巴在线笔试题,阿里编程规范考试

时间:2023-05-04 08:00:05 阅读:189578 作者:2736

主题是这样的。 [113、215、221]; 那么,这个数组是显示的二叉树,每三位,百位数的值表示这个节点在第几个层次,十位数表示这个层次的第几个位置,一个位置就是这个节点的值。 例如,上面数组表示的二叉树如下所示。

3

//

5 1

然后,求叶节点所在路径的节点之和。 (3-5)这是一个叶节点的路径,(3-1)这是另一个叶节点的路径,(3.5 ) ) 3.1 )=12。 然后告诉我最多4楼,我觉得这个条件降低了难度。

我的想法是将给定的序列转换为一般的二叉树表示,求出叶子的路径和,但发现转换方法不好。 我不知道你们有没有更好的转换方法。

publicclassalilibaba { privatestaticintsum; publicstaticvoidmain (string [ ] args )/113、215、221111、222、333、344 int [ ] a={ 113 }; treenoderootreenode=createbinarytree (a ); 打印路径(roo treenode ); system.out.print ln (alili Baba.sum; //二叉树结构privatestaticclasstreenode { intval; 树左; 树轻; publictreenode(intval ) {this.val=val; }//二叉树publicstatictreenodecreatebinarytree (int [ ] data ) (treenoderoot=newtreenode ) )0); int len=data.length; for(intI=0; i len; I({strings=string.valueof ) data[I]; int first=character.getnumericvalue (s.charat (0) ); int second=character.getnumericvalue (s.charat (1) ); intval=character.getnumericvalue (s.charat (2) ); treenodecur=newtreenode(val; if(first==1) root=cur; elseif(first==2) if ) second==1) root.left=cur; else {root.right=cur; }elseif(first==3) if ) second==1) root.left.left=cur; elseif(second==2) {root.left.right=cur; }elseif(second==3) {root.right.left=cur; }else {root.right.right=cur; }else{if(second==1) root.left.left=cur; }elseif(second==2) {root.left.left.right=cur; }elseif(second==3) {root.left.right.left=cur; }elseif(second==4) {root.left.right.right=cur; }elseif(second==5) {root.right.left.left=cur; }elseif(second==6) {root.right.left.right=cur; }elseif(second==7) {root.right.right.left=cur; } else { root.right.right.right=cur; } } }返回根; //publicstaticvoidprinttreepaths (treenode root,int[] path,int len ) if(root==null ) return; path[len]=root.val; //system.out.println(path[Len]; len; if (root.left==null root.right==null )/system.out.println (arrays.tostring (path ) ); AliliBaba.sum=sum(path ); }else{printtreepaths(root.left,path,len ); printtreepaths(root.right,path,len ); } publicstaticintprintpaths (treenode root ) {int[] path=new int[4]; printtreepaths(root,path,0 ); 返回1; }publicstaticintsum(int[]a ) {int res=0; for(intI=0; i a.length; I({RES=a[I] ); }return res; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。