首页 > 编程知识 正文

正则二叉树是满二叉树吗,层次遍历二叉树算法

时间:2023-05-04 04:28:57 阅读:156100 作者:1863

二叉树递归判断一棵二叉树是否填满二叉树:判断一棵二叉树是否填满二叉树

*分析:充满二叉树,就是说该树的任何阶层的节点都被填满了。 例如,高度为h的二叉树的二叉树的所有节点n都满足这样的公式2^h-1=n。 但是请注意,这里的高度h从0楼开始。 也就是说,根节点是0楼。

所以,在这个时候只需要得到总节点和高度。 用递归的方法写。

//判断一棵树是否满了二叉树//满了二叉树:2^h-1=n h高。 n是总节点数public class FullTree {//二叉树节点的定义static class Node {public int value; public Node leftChild; public Node rightChild; 公共node (int data,Node lc,Node rc ) {value=data; leftChild=lc; rightChild=rc; }//我需要的信息公共静态类信息{公共信息}; //高度public int nodes; //总节点数publicinfo(inth,int n ) {height=h; nodes=n; }//主函数publicstaticvoidmain (string [ ] args ) )//nodenode7=newnode(7,null,null ); //nodenode8=newnode(8,null,空值); //nodenode9=newnode(9,null,空值); //nodenode10=newnode(10,null,null ); //nodenode11=newnode(11,null,null ); //nodenode12=newnode(12,null,null ); //nodenode6=newnode(6,node11,node12 ); //nodenode5=newnode(5,node9,node10 ); //nodenode4=newnode(4,node7,node8); //nodenode3=newnode(3,null,空值); //nodenode2=newnode(2,null,null ); 节点node1=new node (1,null,null ); system.out.println (is full tree (node1) ); } publicstaticbooleanisfulltree (nodex ) if ) x==null ) return true; 信息全部=process (x; //求出树整体的高度和总节点数//()1all.height )-1 )举个例子,all.height=4为00001(1 (假设表示1 )1)二进制时,左移4位变换为10进制的话2 //假设左树给我信息,infoleftinfo=process (x.leftchild ); //假设右边的树给我信息,inforightinfo=process (x.right child ); //高度int height=math.max (left info.height,rightInfo.height ) 1; //总节点数int nodes=left info.nodesrightinfo.nodes 1; returnnewinfo(height,nodes ); }

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