当前位置: 首页> 财经> 金融 > 胶州收电脑号码是多少_个人网站代码编写_吉林seo基础知识_永久免费crm客户管理系统

胶州收电脑号码是多少_个人网站代码编写_吉林seo基础知识_永久免费crm客户管理系统

时间:2025/8/29 10:46:17来源:https://blog.csdn.net/m0_46290969/article/details/142822376 浏览次数:0次
胶州收电脑号码是多少_个人网站代码编写_吉林seo基础知识_永久免费crm客户管理系统

简单的二叉树遍历算法,

为了通过给定的先序遍历(preorder)和中序遍历(inorder)数组构造二叉树,我们需要理解这两种遍历方式的特点:

  • 先序遍历(Preorder):首先访问根节点,然后遍历左子树,最后遍历右子树。

  • 中序遍历(Inorder):首先遍历左子树,然后访问根节点,最后遍历右子树。

利用这些特点,我们可以采用递归的方式构建二叉树。

基本思路是:

  1. 先序遍历的第一个元素总是当前子树的根节点。

  2. 在中序遍历中找到这个根节点的位置,它左侧的所有元素都属于左子树,右侧的所有元素都属于右子树。

  3. 递归地构造左子树和右子树,左子树的先序遍历和中序遍历分别是原先序遍历中根节点之后的部分和中序遍历中根节点左侧的部分;右子树的先序遍历和中序遍历分别是原先序遍历中左子树之后的部分和中序遍历中根节点右侧的部分。

代码如下:

import javax.swing.tree.TreeNode;public class buildTree {// 给定两个数组 preorder和inorder 一个线序遍历,一个中序遍历,请构造二叉树并返回其根节点class Solution{public TreeNode buildTree(int[] preorder, int[] inorder) {if(preorder == null || inorder==null || preorder.length != inorder.length){return null;}return buildTreeHelper(preorder,0,preorder.length-1,inorder,0,inorder.length-1);}public TreeNode buildTreeHelper(int[] preorder, int preStart, int preEnd, int[] inorder, int inStart,int inEnd){if(preStart > preEnd||inStart > inEnd){return null;}// 先序遍历的第一个元素就是根节点TreeNode root=new TreeNode(preorder[preStart]);// 在中序遍历中找到根节点的位置int rootIndexInorder = inStart;while(rootIndexInorder <= inEnd&&inorder[rootIndexInorder]!=root.val){rootIndexInorder++;}int leftSubtreeSize=rootIndexInorder-inStart;//递归构建左子树和右子树root.left=buildTreeHelper(preorder,preStart+1,preStart+leftSubtreeSize,inorder,inStart,rootIndexInorder-1);root.right = buildTreeHelper(preorder, preStart + leftSubtreeSize + 1, preEnd, inorder, rootIndexInorder + 1, inEnd);return root;}}
}

关键字:胶州收电脑号码是多少_个人网站代码编写_吉林seo基础知识_永久免费crm客户管理系统

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: