Datawhale第5回打卡博客class TreeNode:def_init__(self,val): self.val=val; self.left=None; self.ri
3039 ワード
ツリーを2つのフォークで検索し、挿入、削除、検索操作をサポート
ツリー内のノードの後続、前駆ノードの検索を実現
ツリーの前、中、後順、およびレイヤ単位のループを実現
leetcode上の検証ツリー(98)とツリー階層遍歴(102107)を完了します.注:これは次の練習問題と重複しています.練習: Invert Binary Tree(ツリーを反転)
英語:https://leetcode.com/problems/invert-binary-tree/
日本語版:https://leetcode-cn.com/problems/invert-binary-tree/
class Solution:#左右交換、再帰完了def invertTree(self,root:TreeNode)->TreeNode:if root==None:return Noot.left,root.right=root.right,root.left self.invertTree(root.left) self.invertTree(root.right) return root
Maximum Depth of Binary Tree(ツリーの最大深さ)
英語:https://leetcode.com/problems/maximum-depth-of-binary-tree/
日本語版:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/
# Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None
class Solution: def maxDepth(self, root: TreeNode) -> int: if root==None: return 0 left_height=self.maxDepth(root.left) right_height=self.maxDepth(root.right) height=max(left_height,right_height)+1 return heght
Validate Binary Search Tree(二叉検索ツリーの検証)[オプションとして]
英語:https://leetcode.com/problems/validate-binary-search-tree/
日本語版:https://leetcode-cn.com/problems/validate-binary-search-tree/【ヒープ】 小さなトップ・スタック、大きなトップ・スタック、優先順位キューの実装
ヒープ・ソートの実装
優先キューを使用してK個の秩序配列をマージ
一組の動態のデータの集合の最大TopKを求めます
3日目スタックソート学習(復習)練習: Path Sum(パスの合計)
英語:https://leetcode.com/problems/path-sum/
日本語版:https://leetcode-cn.com/problems/path-sum/
# Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None
class Solution: def hasPathSum(self, root: TreeNode, sum: int) -> bool: if not root: return False sum-=root.val if not root.left and not root.right: return sum==0 return self.hasPathSum(root.left,sum) or self.hasPathSum(root.right,sum)
ツリー内のノードの後続、前駆ノードの検索を実現
ツリーの前、中、後順、およびレイヤ単位のループを実現
class TreeNode:
def __init__(self,val):
self.val=val;
self.left=None;
self.right=None;
def insert(root,val):#
if root is None:
root=TreeNode(val);
else:
if valroot.val:
root.right=insert(root.right,val);
return root;
def query(root,val):#
if root is None:
return ;
if root.val is val:
return 1;
if root.val root.val:
return delnum(root.right,val);
else: #
if(root.left and root.right):
tmp=finmin(root.right); #
root.val=tmp.val;
root.right=delnum(root.right,val); #
else:
if root.left is None:
root=root.right;
elif root.right is None:
root=root.left;
return root;
leetcode上の検証ツリー(98)とツリー階層遍歴(102107)を完了します.注:これは次の練習問題と重複しています.
英語:https://leetcode.com/problems/invert-binary-tree/
日本語版:https://leetcode-cn.com/problems/invert-binary-tree/
class Solution:#左右交換、再帰完了def invertTree(self,root:TreeNode)->TreeNode:if root==None:return Noot.left,root.right=root.right,root.left self.invertTree(root.left) self.invertTree(root.right) return root
Maximum Depth of Binary Tree(ツリーの最大深さ)
英語:https://leetcode.com/problems/maximum-depth-of-binary-tree/
日本語版:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/
# Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None
class Solution: def maxDepth(self, root: TreeNode) -> int: if root==None: return 0 left_height=self.maxDepth(root.left) right_height=self.maxDepth(root.right) height=max(left_height,right_height)+1 return heght
Validate Binary Search Tree(二叉検索ツリーの検証)[オプションとして]
英語:https://leetcode.com/problems/validate-binary-search-tree/
日本語版:https://leetcode-cn.com/problems/validate-binary-search-tree/
ヒープ・ソートの実装
優先キューを使用してK個の秩序配列をマージ
一組の動態のデータの集合の最大TopKを求めます
3日目スタックソート学習(復習)
英語:https://leetcode.com/problems/path-sum/
日本語版:https://leetcode-cn.com/problems/path-sum/
# Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None
class Solution: def hasPathSum(self, root: TreeNode, sum: int) -> bool: if not root: return False sum-=root.val if not root.left and not root.right: return sum==0 return self.hasPathSum(root.left,sum) or self.hasPathSum(root.right,sum)