LeetCode 105 从中序和先序遍历构造二叉树
发布日期:2021-05-11 01:23:12 浏览次数:9 分类:精选文章

本文共 3608 字,大约阅读时间需要 12 分钟。

������������������������������������

���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

���������������������������������������������������������������������������

������������������

���������������������������������������������������������������

  • ���������������preorder traversal���������������������������������������������������
  • ���������������inorder traverl���������������������������������������������������
  • ������������������������������������������������������������

    • ������������������������������������������������������������������������������������������������������������

    ������������������������������������������������������

    ���������������������������������������������������

  • ���������������������������������������������������������������������
  • ������������������������������������������������������������������
  • ���������������������������

    #include 
    using namespace std;struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}};class Solution { public: //buildTree������: ������preorder���inorder��������������� TreeNode* buildTree(vector
    & preorder, vector
    & inorder) { if (inorder.empty() || preorder.empty()) { return nullptr; } //��������� TreeNode* root = new TreeNode(preorder[0]); //��������������������������������������������������������� auto buildTreeAux = [&root](int preorder_idx, int inorder_left, int inorder_right) { //��������������������������������������� if (preorder_idx >= preorder.size()) return nullptr; //������������������������ int inorder_current = -1; for (int i = inorder_left; i <= inorder_right; ++i) { if (inorder[i] == preorder[preorder_idx]) { inorder_current = i; break; } } if (inorder_current == -1) { //������������������������������������������������������������ return nullptr; } //��������������������� root->left = buildTreeAux(preorder_idx + 1, inorder_left, inorder_current - 1); root->right = buildTreeAux(preorder_idx + 2, inorder_current + 1, inorder_right); return root; }; return buildTreeAux(0, 0, inorder.size() - 1); }};

    ������������

    ���������������������������������������������������

  • ������������������preorder������������������������
  • ���������������������������������������������������preorder���������������������������������������������������3.Recursive step������������������������������������������������������������
  • ������������������������������������������������������������������������������

    while (root), perform something

    ������������������������������������������������������������������������

    ���������������������������������������preorder���inorder���������������������������������������������������������

    ������������������������������������������������������������������������������������������������������������������������������������������������������

    上一篇:LeetCode 109 有序链表转换成二叉搜索树
    下一篇:LeetCode 104 二叉树的最大深度

    发表评论

    最新留言

    哈哈,博客排版真的漂亮呢~
    [***.90.31.176]2025年04月05日 08时11分00秒