算法面试——二叉树遍历:递归、非递归、重建二叉树

发布时间:2026/9/20 2:03:50
算法面试——二叉树遍历:递归、非递归、重建二叉树 二叉树遍历是算法面试的绝对基础。递归写法要熟练非递归写法要能手撕。一、前序遍历voidpreorder(TreeNoderoot){if(rootnull)return;System.out.print(root.val );preorder(root.left);preorder(root.right);}voidpreorderIter(TreeNoderoot){StackTreeNodestacknewStack();if(root!null)stack.push(root);while(!stack.isEmpty()){TreeNodenodestack.pop();System.out.print(node.val );if(node.right!null)stack.push(node.right);if(node.left!null)stack.push(node.left);}}二、中序遍历voidinorderIter(TreeNoderoot){StackTreeNodestacknewStack();TreeNodecurrroot;while(curr!null||!stack.isEmpty()){while(curr!null){stack.push(curr);currcurr.left;}currstack.pop();System.out.print(curr.val );currcurr.right;}}三、后序遍历最难的非递归ListIntegerpostorderIter(TreeNoderoot){LinkedListIntegerresultnewLinkedList();StackTreeNodestacknewStack();if(root!null)stack.push(root);while(!stack.isEmpty()){TreeNodenodestack.pop();result.addFirst(node.val);// 头插法相当于逆序if(node.left!null)stack.push(node.left);if(node.right!null)stack.push(node.right);}returnresult;// 输出顺序左右根}四、层序遍历ListListIntegerlevelOrder(TreeNoderoot){ListListIntegerresultnewArrayList();QueueTreeNodequeuenewLinkedList();queue.offer(root);while(!queue.isEmpty()){intsizequeue.size();ListIntegerlevelnewArrayList();for(inti0;isize;i){TreeNodenodequeue.poll();level.add(node.val);if(node.left!null)queue.offer(node.left);if(node.right!null)queue.offer(node.right);}result.add(level);}returnresult;}五、重建二叉树publicTreeNodebuildTree(int[]preorder,int[]inorder){returnbuild(preorder,0,inorder,0,inorder.length-1);}privateTreeNodebuild(int[]pre,intpreStart,int[]in,intinStart,intinEnd){if(preStartpre.length||inStartinEnd)returnnull;TreeNoderootnewTreeNode(pre[preStart]);introotIdxinStart;while(in[rootIdx]!root.val)rootIdx;intleftLenrootIdx-inStart;root.leftbuild(pre,preStart1,in,inStart,rootIdx-1);root.rightbuild(pre,preStartleftLen1,in,rootIdx1,inEnd);returnroot;} 觉得有用的话点赞 关注【张老师技术栈】吧每周更新 Java/Python/爬虫 实战干货不让你白来。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询