{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Partiel 2027" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise 3" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "def addwithsize(B, x):\n", " if B == None:\n", " return (BinTreeSize(x, None, None, 1), True)\n", " else:\n", " if x == B.key:\n", " return (B, False)\n", " elif x > B.key:\n", " (B.left, res) = addwithsize(B.left, x)\n", " if res == True:\n", " B.size = B.size + 1\n", " return (B, True)\n", " else:\n", " (B.right, res) = addwithsize(B.right, x)\n", " if res == True:\n", " B.size = B.size + 1\n", " return (B, res)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise 4" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def lca(B, x, y):\n", " if x <= B.key:\n", " if y >= B.key:\n", " return B.key\n", " else:\n", " return __lca(B.left, x, y)\n", " else:\n", " if y >= B.key:\n", " return __lca(B.right, x, y)\n", " else:\n", " return B.key" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise 5" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "def mystery(B, x, y):\n", " if (B == None):\n", " return None\n", " else:\n", " if B.key < x:\n", " return mystery(B.right, x, y)\n", " elif y < B.key:\n", " return mystery(B.left, x, y)\n", " else:\n", " B.left = mystery(B.left, x, y)\n", " B.right = mystery(B.right, x, y)\n", " return B" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Partiel 2025" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise 1\n", "1. 14 / 4 / 2\n", "2. 1 / 2\n", "\n", "### Exercise 3" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "def __testBST(B, inf, sup):\n", " if B == None:\n", " return None\n", " else:\n", " if B.key > inf and B.key <= sup:\n", " return __testBST(B.left, inf, B.key) and __testBST(B.right, B.key, sup)\n", " else:\n", " return False" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise 4" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "def __searchlevel(B, x):\n", " if B == None:\n", " return -1\n", " else:\n", " if x == B.key:\n", " return 0\n", " else:\n", " if x < B.key:\n", " res = __searchlevel(B.left, x)\n", " else:\n", " res = __searchlevel(B.right, x)\n", " if res == -1:\n", " return -1\n", " else:\n", " return 1 + res\n", "\n", "def generation(B, x, y):\n", " res_x = __searchlevel(B, x)\n", " if res_x == -1:\n", " return False\n", " else:\n", " return res_x == __searchlevel(B, y)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.14" } }, "nbformat": 4, "nbformat_minor": 4 }