Python二叉搜索树与双向链表转换实现方法
Jun 10, 2016 pm 03:05 PM本文实例讲述了Python二叉搜索树与双向链表实现方法。分享给大家供大家参考,具体如下:
# encoding=utf8 ''' 题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。 要求不能创建任何新的结点,只能调整树中结点指针的指向。 ''' class BinaryTreeNode(): def __init__(self, value, left = None, right = None): self.value = value self.left = left self.right = right def create_a_tree(): node_4 = BinaryTreeNode(4) node_8 = BinaryTreeNode(8) node_6 = BinaryTreeNode(6, node_4, node_8) node_12 = BinaryTreeNode(12) node_16 = BinaryTreeNode(16) node_14 = BinaryTreeNode(14, node_12, node_16) node_10 = BinaryTreeNode(10, node_6, node_14) return node_10 def print_a_tree(root): if root is None:return print_a_tree(root.left) print root.value, ' ', print_a_tree(root.right) def print_a_linked_list(head): print 'linked_list:' while head is not None: print head.value, ' ', head = head.right print '' def create_linked_list(root): '''构造树的双向链表,返回这个双向链表的最左结点和最右结点的指针''' if root is None: return (None, None) # 递归构造出左子树的双向链表 (l_1, r_1) = create_linked_list(root.left) left_most = l_1 if l_1 is not None else root (l_2, r_2) = create_linked_list(root.right) right_most = r_2 if r_2 is not None else root # 将整理好的左右子树和root连接起来 root.left = r_1 if r_1 is not None:r_1.right = root root.right = l_2 if l_2 is not None:l_2.left = root # 由于是双向链表,返回给上层最左边的结点和最右边的结点指针 return (left_most, right_most) if __name__ == '__main__': tree_1 = create_a_tree() print_a_tree(tree_1) (left_most, right_most) = create_linked_list(tree_1) print_a_linked_list(left_most) pass
更多关于Python相关内容可查看本站专题:《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Quels sont les avantages et les inconvénients des modèles ?

Google AI annonce Gemini 1.5 Pro et Gemma 2 pour les développeurs

Pour seulement 250$, le directeur technique de Hugging Face vous apprend étape par étape comment peaufiner Llama 3

Partagez plusieurs frameworks de projets open source .NET liés à l'IA et au LLM

Un guide complet sur le débogage et l'analyse des fonctions Golang

Comment enregistrer la fonction d'évaluation
