Hướng dẫn dùng python recursion python

Sorry if my English is bad, I speak Korean as mother tongue.
I am implementing binary search tree in Python 3, but I wasn't able to meet my goal.
Here is code:

class Node[object]:

    def __init__[self, key=None, data=None]:
        self.key = key
        self.data = data

class BinarySearchTree[object]:
    keyfunc = None  # Will it be worse when using lambda x: x as default?
    
    def __init__[self, node=None]:
        self.root = node
        self.left = None
        self.right = None
        # I don't want default to be NoneType, but don't know how for now.

    def add[self, key, data=None]:
        node = Node[key, data]
        if self.root is None:
            self.root = node
            return
        parent = self.root.key
        if self.keyfunc is None:
            if key < parent:
                if self.left is None:
                    self.left = __class__[node]
                else:
                    self.left.add[key, data]
                        
            elif key > parent:
                if self.right is None:
                    self.right = __class__[node]
                else:
                    self.right.add[key, data]
        else:
            if keyfunc[key] < keyfunc[parent]:
                if self.left is None:
                    self.left = __class__[node]
                else:
                    self.left.add[key, data]
            elif keyfunc[key] > keyfunc[parent]:
                if self.right is None:
                    self.right = __class__[node]
                else:
                    self.right.add[key, data]
    def inorder[self]:
        if self.root:
            if self.left:
                self.left.inorder[]
            print[self.root.key, end=' ']
            if self.right:
                self.right.inorder[]

if __name__ == '__main__':
    bst1 = BinarySearchTree[]
    arr = [2,6,4,3,2,7,8,1,9,5]
    for key in arr:
        bst1.add[key]
    bst1.inorder[]

It works anyway, but what I want is:

  • even when root node has no child, I want the type of bst1.left[or bst1.right] be always BinarySearchTree.
    That way, I can allow null tree treated in consistency with other trees, and also can I remove repeating if self.left is None in add[].
  • I don't want to manually do bst1.left = BinarySearchTree[None] after class definition, because it will be required to applied to all of nodes.

I tried self.left = BinarySearchTree[None][of course it resulted bad recursion], and tried to use __new__[] method and Metaclasses as answered in other stackoverflow questions, but couldn't come up with solution.
It would very grateful if I can get help.

Hướng dẫn python dunder

Trang chủ Lập trình Python Phương thức Magic hoặc Dunder trong Python Trong hướng dẫn này chúng ta sẽ đi tìm hiểu về phương thức Magic và Nạp chồng toán tử ...

Hướng dẫn dùng range define python

Nội dung chínhHàm range[] trong python là gìCú pháp hàm Range[] trong PythonChương trình mẫu sử dụng hàm Range[] trong PythonCách sử dụng hàm Range[] nâng cao trong ...

Hướng dẫn subprocess popen python

Hướng dẫn sử dụng module subprocess trong Python để gọi một lệnh hoặc ứng dụng khác từ Python. Bạn cũng sẽ học được cách dùng subprocess.run[] và ...

Hướng dẫn switch python

Đã đăng vào thg 3 22, 2019 8:46 SA 1 phút đọc 1 Giới thiệu.Khi mình tìm hiểu python ta đã thấy một điều quái lạ là vì sao python không định nghĩa các function ...

Hướng dẫn dùng py spark python

Happy New Year 2021 ^^ !Ở trong bài viết này mình sẽ viết bài về Pyspark mục đích để nhớ kiến thức và chia sẻ cho mọi người những gì mình đã học được. ...

Hướng dẫn discard trong python

Hàm Set discard[] trong Python xóa phần tử được chỉ định từ một set.Hàm này khác với hàm remove[], bởi vì hàm remove[] sẽ phát sinh lỗi nếu phần tử được ...

Hướng dẫn dùng np.random.choice python

26. Random một số trong pythonRandom và “secrets” module, bộ tạo số giả ngẫu nhiên mặc định của random module được thiết kế với trọng tâm vào mô phỏng ...

Hướng dẫn dùng char python python

Nhóm phát triển của chúng tôi vừa ra mắt website langlearning.net học tiếng Anh, Nga, Đức, Pháp, Việt, Trung, Hàn, Nhật, ... miễn phí cho tất cả mọi người. Là ...

Hướng dẫn concatenate string python

String concatenation means add strings together.Python Variables Tutorial Creating Variables Variable Names Assign Value to Multiple Variables Output Variables Global VariablesCopyright ©2022 ...

Hướng dẫn dùng small python python

Nội dung chínhPhương thức Lower[] trong Python là gìCú pháp Phương thức Lower[] trong PythonChương trình mẫu sử dụng Phương thức Lower[] trong PythonLưu ý khi sử ...

Hướng dẫn dùng bool definition python

Trong bài học này chúng ta sẽ xem xét chí tiết cách sử dụng kiểu dữ liệu bool trong Python. Đây là một kiểu dữ liệu đơn giản nhưng rất quan trọng để ...

Hướng dẫn dùng reverse definition python

Nội dung chínhĐảo ngược list ban đầu trong python| Phương thức reverse[]Đảo ngược list và tạo ra một list mới trong python | Cắt [slice] list Đảo ngược list và ...

Hướng dẫn closure python

Tìm hiểu về Closure trong PythonGiống như các vòng lặp lồng nhau, các hàm cũng có thể được lồng vào nhau. Về cơ bản, phương pháp ràng buộc dữ liệu với ...

Hướng dẫn calculate days python

without using Lib just pure code:#Calculate the Days between Two Date daysOfMonths = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] def isLeapYear[year]: # Pseudo code for this algorithm is ...

Hướng dẫn pymysql

Mục lục Nhóm phát triển của chúng tôi vừa ra mắt website langlearning.net học tiếng Anh, Nga, Đức, Pháp, Việt, Trung, Hàn, Nhật, ... miễn phí cho tất cả mọi ...

Hướng dẫn dùng def quite python

Hướng dẫn sử dụng def trong python. Bạn sẽ học được cách sử dụng def để khai báo hàm trong python, cũng như cách gọi hàm trong python đã được khai báo sau ...

Hướng dẫn append to array python

Hàm numpy.append [] có sẵn trong gói NumPy. Như tên cho thấy, append có nghĩa là thêm một cái gì đó. Hàm numpy.append [] được sử dụng để thêm hoặc nối các giá ...

Hướng dẫn python statistics packages

Vietnamese [Tiếng Việt] translation by Dai Phong [you can also view the original English article] Phân tích số liệu thống kê giúp chúng ta hiểu được toàn bộ thông tin. ...

Hướng dẫn dùng pandas ix python

Trụ sở chính:Văn phòng: Số 27-3RD, Sunrise D, The Manor Central Park, đường Nguyễn Xiển, phường Đại Kim, quận Hoàng Mai, TP. Hà Nội.Liên hệ truyền thông: ...

Hướng dẫn remainder in python example

Introduction to Python Remainder OperatorPython remainder operators are used for the computation of some operands. Operators are special symbols that are used on operands to do some operation ...

Hướng dẫn dùng parent class python

TechblogSoftware Engineering I, Giới thiệu Class cùng với object là những thành phần lõi của Python. Class cung cấp một cách tổ chức các attributes[data] và methods ...

Hướng dẫn dùng eval python python

Ví dụ về hàm eval trong PythonVề mặt kỹ thuật, hàm eval là một hàm tích hợp sẵn trong Python và cho phép lập trình viên chạy code Python [được truyền dưới ...

Hướng dẫn python bytes encoding

bytes[] trong Python trả về các đối tượng byte là một chuỗi các số nguyên, không thể thay đổi, được khởi tạo với size và dữ liệu cho trước, trong ...

Hướng dẫn dùng pandas where python

Trụ sở chính:Văn phòng: Số 27-3RD, Sunrise D, The Manor Central Park, đường Nguyễn Xiển, phường Đại Kim, quận Hoàng Mai, TP. Hà Nội.Liên hệ truyền thông: ...

Hướng dẫn arange trong python

Các khóa học miễn phí qua video:Lập trình C Java C# SQL Server PHP HTML5-CSS3-JavaScriptMục lục bài viết:Giá trị trả lại và các tham số của np.arange []Đối số ...

Hướng dẫn dùng herencia collection python

New in version 2.4.Source code: Lib/collections.py and Lib/_abcoll.pyThis module implements specialized container datatypes providing alternatives to Python’s general purpose built-in ...

Hướng dẫn dim in python

Nội dung chínhPython Numpy là gì?NumPy ArrayNumpy cài đặt như thế nào?Multi-dimensional numPy array là gì?Python NumPy Array v/s ListPython NumPy OperationsTham khảoPython Numpy là ...

Hướng dẫn tài liệu python free

Nội dung1 Python là gì?2 Tại sao nên học lập trình Python?3 Cơ hội việc làm Python4 Các tài liệu học lập trình Python cần phải biếtPython là gì? Bạn đang muốn ...

Hướng dẫn *args trong python

Dẫn nhậpFunctions là cuộc sống, đúng không? nếu bạn là người mới vào học Python - là lính mới hay nhảy qua từ ngôn ngữ khác - bạn học về số lượng ...

Hướng dẫn dùng python melt python

IIUC, bạn có thể sử dụng pandas.Index.differenceđể lấy tất cả các cột của khung dữ liệu không có trong danh sách được chỉ định của bạn.Một chút của ...

Hướng dẫn abstract class trong python

Đã đăng vào thg 6 18, 2019 4:28 CH 5 phút đọc Hello everyone! Sau bao khó khăn thì chúng ta lại được gặp nhau mọi người nhỉ. Và như thường lệ, mình sẽ giới ...

Hướng dẫn dùng python stats python

In this Python tutorial, we will learn about the “Python Scipy Stats Norm” to calculate the different types of normal distribution and how to plot it and cover the following topics.Nội dung ...

Hướng dẫn googletrans python

Trong bài học này chúng ta sẽ tìm hiểu googletrans, hay còn gọi là Python Google Translator, đây là một module dùng để dịch văn bản qua các ngôn ngữ bằng cách sử ...

Hướng dẫn recursive permutation python

Im having trouble trying to make a permutation code with recursion. This is suppose to return a list back to the use with all the possible position for each letter.For the word cat, it is suppose to ...

Chủ Đề