首页 > 编程知识 正文

二叉树遍历过程看不懂,二叉树的前序遍历

时间:2023-05-06 13:48:58 阅读:29997 作者:3122

文章开始前,无厘头:希望大家对所学能认真好好理解,那样才能自己的东西,理解万岁!

来这里,我想大家至少知道二叉树是什么。 那么,我们直奔主题;

前相序扫描、中相序扫描、后相序扫描、层序扫描到底有多少二叉树由根节点、左部分树和右部分树三部分构成,如果规定d、l、r分别表示扫描根节点、左部分树、右部分树,我们最常见

DLR--前相序扫描(根在前,从左到右,一棵树根永远在左子树前面,左子树永远在右子树前面) ldr ) )中相序扫描)根在里面,从左到右,一棵树左子树永远在根前面

看到这里我希望大家牢记下面几点:

根是相对的,对于整个二叉树,有自己唯一的根,对于每棵子树,也有自己的根,如下三幅图所示,对整棵树来说,a是根,在前序遍历、中序遍历、后序遍历中,a分别向前、中间、向后遍历。 在d的情况下,它是g和h的根,在d、g、h这个子树的情况下,用3个扫描方式得到的排列分别是DGH、GDH、GHD。整棵树的起点,就如上面所说的,从A开始,例如前序遍历的话,一棵树的根永远在左子树前面,左子树又永远在右子树前面,找起点就好了。一定看到这里,心情会变得很吃惊吧。 按照这个想法,自己试着一次进行以下3种扫描方法就可以了

http://www.Sina.com/http://www.Sina.com/http://www.Sina.com/Java代码实现的三种遍历方式(递归实现(部分) ) ) ) ) )

前序

publicvoiditeratefirstorder (二进制特征节点) if ) node==null ) { return; }操作(节点); iteratefirstorder (node.get leftchild ); iteratefirstorder (node.getright child ); }公共语音操作(二进制节点) if )节点==null ) { return; } system.out.println (node.get data (); )中序

publicvoiditeratemediumorder (二进制演进节点) if ) node==null ) { return; } iteratemediumorder (node.get leftchild (); 操作(节点; iteratemediumorder (node.getright child ); )后序

publicvoiditeratelastorder (二进制节点) if ) node==null ) { return; } iterate last order (node.get leftchild (); iterate last order (node.getright child ); 操作(节点; } 前序遍历:ABDGHCEIF

从上到下,从左到右扫描

leetcode102二叉树的层序遍历二叉树的层序遍历我们使用队列为你实现二叉树。 请返回通过层序遍历获得的节点值。 也就是说,对于每个层次,从左到右访问所有节点。/* * definitionforabinarytreenode.*公共类treenode { * intval; * TreeNode left; * TreeNode right; ** TreeNode(} ) treenode () intval ) ) { this.val=val; }*treenode(intval,TreeNode left,TreeNode right ) ) { * this.val=val; * this.left=left; * this.right=right; * } */class解决方案{ publiclistlistintegerlevelorder (treenode root ) listlistintegerres=new ArrayList ); if (根==空)返回RES; queuetreenodequeue=new linked list (; queue.offer (根); while (! queue.isEmpty () ) {int size=queue.size; ListIntegerlist=new ArrayList (; //用于存储该层的while(size0) { TreeNode cur=queue.poll; //添加定义虚拟节点list.add(cur.val )的//下一层if (cur.left!=null}{queue.offer(cur.left ); (if ) cur.right!=null}{queue.offer(cur.right ); (尺寸---; } RES.add (列表); }返回RES; }

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