195 lines
4.2 KiB
Plaintext
195 lines
4.2 KiB
Plaintext
{
|
|
"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
|
|
}
|