首页 > 编程知识 正文

平衡二叉树一定是二叉排序树,层次遍历和中序遍历构建二叉树

时间:2023-05-05 05:16:46 阅读:15149 作者:4008

LeetCode:103 .二叉树锯齿层序遍历

层序横移

使用两端的队列,各层从最后面取。

然后,根据遍历顺序,先添加左节点还是右节点。

整理一下思路就行了

AC Code

/* * definitionforabinarytreenode.*公共类treenode { * intval; * TreeNode left; * TreeNode right; *treenode(intx ) { val=x; } * } */class解决方案{//层序遍历publiclistlistintegerzigzaglevelorder (treenode root ) ) listlistintegerans=new arraylistion 列表integer list=new ArrayList (; if (根==空) { return ans; //双端队列dequetreenodequeue=新链接列表(; queue.add (根; 布尔型b=真; //root先从左到右使用while (! queue.isEmpty () ) { int size=queue.size; 列表treenode tmp=new ArrayList (; for(intI=0; i size; I ) { treenode node=空; node=queue.removeLast (; tmp.add (节点; }for(treenodetr:tmp ) if (b ) if ) tr.left!=null queue.add (tr.left ); if(tr.right!=null queue.add (tr.right ); }else{if(tr.right!=null queue.add (tr.right ); if(tr.left!=null queue.add (tr.left ); }list.add(tr.val ); (b=! B; ans.add (新阵列列表); list.clear (; }返回Ans; }

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