一亩三分地

 找回密码 注册账号

扫描二维码登录本站

BBS
Offer多多
Salarytics
交友
Learn
Who's Hiring?
疫情动态
指尖新闻
Instant
客户端
微信公众号
扫码关注公众号
留学申请公众号
扫码关注留学申请公众号
Youtube频道
留学博客
关于我们
查看: 775|回复: 5
收起左侧

[树/链表/图] 二叉树一些个人总结

[复制链接] |只看干货 |刷题, 树/链表/图
我的人缘0

分享帖子到朋友圈
Timofu | 显示全部楼层 |阅读模式
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   98% (91)
 
 
1% (1)    👎

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?注册账号

x
在github wiki功能开始帖子总结一些典型算法,这里是花了一个周末学习的二叉树,欢迎指教!!
https://github.com/Issac-F/Algorithm-Ocean/wiki/%E4%BA%8C%E5%8F%89%E6%A0%91

评分

参与人数 1大米 +2 收起 理由
14417335 + 2

查看全部评分


上一篇:需求短期leetcode号,可以组队拼,我只需要准备sql
下一篇:既然各公司都喜欢做编程题,那么何不候选人都统一先过来做一份卷子,通过之后再面试?
我的人缘0

升级   73.33%

FanL 2020-7-4 16:21:25 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   0% (0)
 
 
0% (0)    👎
+1 这个算是浅显易懂
回复

使用道具 举报

我的人缘0

升级   70.5%

shawn_lyu 2020-7-4 23:10:34 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (40)
 
 
0% (0)    👎
总结好评!
(提供一下前中后traversal的迭代、递归代码 https://shawnlyu.com/algorithms/40/
(以及几个分治法的练习:
(148. Sort List
(23. Merge k Sorted Lists
(215. Kth Largest Element in an Array

评分

参与人数 1大米 +2 收起 理由
Emol + 2 欢迎分享你知道的情况,会给更多积分奖励!

查看全部评分

回复

使用道具 举报

我的人缘0

升级   20%

李浩泉 2020-7-5 04:27:45 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   94% (611)
 
 
5% (34)    👎
如果有PYTHON版的就更好啦!
回复

使用道具 举报

我的人缘0

升级   59.5%

TeaEyeChampion 2020-7-5 05:42:09 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (48)
 
 
0% (0)    👎
请问面试的时候碰到任何tree的问题,如果只给出iterative solution的话一般会加问recursive solution吗? 个人觉得iteration比较intuitive, recursion基本想不出来
回复

使用道具 举报

我的人缘0

升级   30%

galveston12345 2020-7-5 06:45:58 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   0% (0)
 
 
0% (0)    👎
# Binary search tree

## Table of Contents

1. [Traversal](#traversal)
   - [In-order](#in-order)
   - [Pre-order](#pre-order)
   - [Post-order](#post-order)
   - [Breath-first-search](#BFS)
  
## Traversal <a name="traversal"></a>

- In-order (Left Root Right) <a name="in-order"></a>
  
        # Definition for a binary tree node.
        # class TreeNode(object):
        #     def __init__(self, x):
        #         self.val = x
        #         self.left = None
        #         self.right = None

        # Use recursion
        def inorder_recursive (root):
            if root == None:
                return
            inorder_recursive(root.left)
            do_something_about(root)
            inorder_recursive(root.right)

        # Use stack
        def inorder_nonrecursive(root):
            stack = []
            node = root

            while True:
                if node != None:
                    stack.append(node)
                    node = node.left
                else:
                    if len(stack) == 0:
                        break
                    node = stack.pop()
                    do_something_about(node)
                    node = node.right

- Pre-order (Root, Left, Right) <a name="pre-order"></a>

        # Use recursion
        def preorder_recursive(root):
            if root == None:
                return
            do_something_about(root)
            preoder_recursive(root.left)
            preorder_recursive(root.right)

        # Use stack
        def preorder_nonrecursive(root):
            stack = []
            node = root

            while True:
                if node != None:
                    do_something_about(node)
                    if node.right != None:
                        stack.append(node.right)
                    node = node.left
                else:
                    if len(stack) == 0:
                        break
                    node = stack.pop()

- Post-order (Left, Right, Root) <a name="post-order"></a>

        # Use recursion
        def postorder_recursive(root):
            if root == None:
                return
            postorder_recursive(root.left)
            postorder_recursive(root.right)
            do_something_about(root)

        # Use stack
        def postorder_nonrecursive(root):
            stack = []
            node = root

            while True:
                if node != None:
                    stack.append((node, False))
                    node = node.left
                else:
                    if len(stack) == 0:
                        break
                    node, visited = stack.pop()
                    if not visited:
                        stack.append((node, True))
                        node = node.right
                    else:
                        do_something_about(node)
                        node = None         # force to come back to the 'else' branch in next iteration

- Breath-first-search <a name="BFS"></a>

        # Use queue
        def BFS_BST(root):
            if root == None:
                return
            queue = [root]
            while queue:
                node = queue.pop(0)
                do_something_about(node)
                if node.left != None:
                    queue.append(node.left)
                if node.right != None:
                    queue.append(node.right)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

隐私提醒:
■为防止被骚扰甚至人肉,不要公开留微信等联系方式,请以论坛私信方式发送。
■特定版块可以超级匿名:https://pay.1point3acres.com/tools/thread
■其他版块匿名方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

手机版|||一亩三分地

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

Some icons made by Freepik from flaticon.com

快速回复 返回顶部 返回列表