1
"100101" 과 같은 바이너리 시퀀스에서 트리를 이진 파일로 만들려고하는데 다음과 같이 트리를 생성하고 싶습니다. 값 (예 : 값 = "1001")파이썬에서 바이너리 시퀀스로부터 이진 트리 생성하기
문자열 순서가 될 것입니다 : <Root node>
|
1
/
0
/
0
\
1
/
0
\
1
그래서 내가 여기했던 코드입니다 (기본적으로 1 수단은 오른쪽으로 가서 0 수단은 왼쪽으로 이동)
def _inserto(root,value):
for i in value:
if root == None:
root = BSTNode(i)
current = root
elif i == "1":
if current.right is not None:
current.right = BSTNode(i)
current = current.right
else:
current.right = BSTNode(i)
current = current.right
elif i == "0":
if (current.left is not None):
current.left = BSTNode(i)
current = current.left
else:
current.left =BSTNode(i)
current = current.left
return root
이제 문제는 내가 입력에 "01"와 같은 다른 순서를 원하는 경우, 나무가이
<Root Node>
|
1
/
0
/\
0 1
\
1
/
0
\
1
과 같아야합니다,하지만 내 기능이기 때문에 난 정말, 힘든 시간을 보내고하고 있다는 것입니다 지 오래된 나무를 덮어 쓰려고합니다.
* 정확하게 * 문제가되는 부분은 무엇입니까? 파이썬에서도 마지막 노드에 대한 외부 참조를 유지할 수 있습니다. 파이썬에는 클래스와 객체도 있습니다. – Marcin
"기본적으로 1은 오른쪽으로 이동하고 0은 왼쪽으로 이동 함을 의미합니다."Err ... 다이어그램에서 1은 왼쪽으로 이동한다는 의미입니다. 다이어그램이 잘못 되었습니까? 아니면 잘못된 방식으로 읽고 있습니까? –
@MarkByers 다이어그램과'_insert'의 코드 사이에 "err ..."을 공유하고 있습니다. int의 루트를 1로 시작하고, 다음은 0 <1이므로 왼쪽으로 이동하지만 0은 <0이 아닙니다 , 그래서 그것은 오른쪽으로 가야한다. (그러나 왼쪽으로가는 것으로 보인다.) 나는 OP가 세 가지 가능한 결과 중 어느 것이 실제로 원하는 것인지를 명확히하기를 바라고있다. –