集团网站建设特点互联网课堂,医疗集团手机网站建设,淄博网站外包,网站建设维护协议书给定两个整数数组 preorder 和 inorder #xff0c;其中 preorder 是二叉树的先序遍历#xff0c; inorder 是同一棵树的中序遍历#xff0c;请构造二叉树并返回其根节点。
思路一#xff1a;递归
struct TreeNode* buildTree(int* preorder, int preorderSize, int* ino…给定两个整数数组 preorder 和 inorder 其中 preorder 是二叉树的先序遍历 inorder 是同一棵树的中序遍历请构造二叉树并返回其根节点。
思路一递归
struct TreeNode* buildTree(int* preorder, int preorderSize, int* inorder, int inorderSize){if(preorderSize0)return NULL;struct TreeNode* root(struct TreeNode*)malloc(sizeof(struct TreeNode));int index;root-valpreorder[0];for(index0;indexinorderSize;index){if(inorder[index]preorder[0]){break;}}root-leftbuildTree(preorder1,index,inorder,index);root-rightbuildTree(preorderindex1,preorderSize-index-1,inorderindex1,preorderSize-index-1);return root;
}
分析
本题要通过二叉树的前序遍历和中序遍历来构造二叉树根据前序遍历先输出根节点再输出左子树右子树中序遍历先输出左子树再输出根节点右子树可以锁定根节点再利用递归构造二叉树的左右子树得到答案
总结
本题考察二叉树构造问题理解二叉树前序遍历和中序遍历再利用递归即可做出