首先祝Linux生日快乐
开源不是免费!!!!!!
这篇文章总结一下树,记得之前总结过,但是在遗忘知识这方面我绝对是大神级别的。这次立flag最后一次总结树
二叉树,故名思意,有两个子节点的数据结构。
为了更深刻的了解二叉树,先写个垃圾题。leetcode根据前序和中序遍历重建二叉树
int findrootPosIninorder(int[] inorder, int k){
for(int i=0;i<inorder.length;i++){
if(inorder[i]==k)return i;
}
return -1;
}
public TreeNode buildTree(int[] preorder, int[] inorder) {
if(preorder.length==0)return null;
TreeNode root=new TreeNode(preorder[0]);
if(preorder.length==1)return root;
int rootPosIninorder=findrootPosIninorder(inorder,preorder[0]);
if(rootPosIninorder>0){
root.left=buildTree(Arrays.copyOfRange(preorder,1,rootPosIninorder+1),Arrays.copyOfRange(inorder,0,rootPosIninorder));
}
if(inorder.length-rootPosIninorder-1>0){
root.right=buildTree(Arrays.copyOfRange(preorder,rootPosIninorder+1,preorder.length),Arrays.copyOfRange(inorder,rootPosIninorder+1,inorder.length));
}
return root;
}
一定要确定不越界再往数组里塞!!!
满二叉树,除了最后一层的叶子节点每个节点都有两个子节点。
完全二叉树是从上到下 从左到右编号和满二叉树一样的二叉树。
这里做一个leetcode919,懂和会不是一个概念,经常有懂王(自己)连层序遍历都寻思半天,比如我这个呆逼。力扣
TreeNode treeNode;
pu