Datawhale第5回打卡博客class TreeNode:def_init__(self,val): self.val=val; self.left=None; self.ri

3039 ワード

ツリーを2つのフォークで検索し、挿入、削除、検索操作をサポート
ツリー内のノードの後続、前駆ノードの検索を実現
ツリーの前、中、後順、およびレイヤ単位のループを実現
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)を完了します.注:これは次の練習問題と重複しています.
  • 練習:
  • 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)