結果

問題 No.566 だいたい完全二分木
コンテスト
ユーザー nuco-t-komuro
提出日時 2026-07-13 15:59:57
言語 Python3
(3.14.3 + numpy 2.4.4 + scipy 1.17.1)
コンパイル:
python3 -mpy_compile _filename_
実行:
python3 _filename_
結果
TLE  
実行時間 -
コード長 876 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 293 ms
コンパイル使用メモリ 21,540 KB
実行使用メモリ 22,424 KB
最終ジャッジ日時 2026-07-13 16:27:30
合計ジャッジ時間 7,514 ms
ジャッジサーバーID
(参考情報)
judge2_0 / judge1_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other TLE * 1 -- * 10
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

import random 

class node:
	def __init__(self,num):
		self.num = num
		self.left:node = None
		self.right:node = None

def addNode(cur:node,input_num:int): #ノード追加,再帰でNoneになるまでたどっていく
	if (cur.num < input_num):
		if (cur.right is None):
			cur.right = node(input_num)
		else:
			addNode(cur.right,input_num)
	else:
		if (cur.left is None):
			cur.left = node(input_num)
		else:
			addNode(cur.left,input_num)

def calcHeight(cur: node):
	if (cur is None):
		return -1
	return max(calcHeight(cur.left),calcHeight(cur.right))+1

def main():
	k = int(input())
	lst = list(range(1,2**k))
	while(1):
		random.shuffle(lst)
		for i,num in enumerate(lst):
			if i == 0:
				root = node(num)
			else:
				addNode(root,num)
		
		height = calcHeight(root)
		if (height > k and height <3*k):
			break
	print(*lst)

if __name__ == "__main__":
	main()
0