시작하기 전에 Stack Overflow에 익숙하지 않으므로이 게시물에서 잘못된 형식의 세부 정보를 사과드립니다. 필요한 경우 수정하십시오.C# insert function from BST
어쨌든 제 질문에 대해서 저는 C#을 처음 접했고, 저는 C++과 상당히 괜찮습니다. 그러나 저는 C#을 배워야합니다. BST에 대한 삽입 기능을 사용하고 있으며 실수를 파악하지 못하는 것 같습니다. 코드를 실행하면 루트가 계속 교체됩니다. 값 5를 삽입 한 다음 값 6을 삽입 한 후 트리는 값 6으로 만 구성됩니다. Root.Num/.Left /. Right에 대해 내 속성을 사용하는 방법과 관련이 있다고 생각합니다.
private void insertHelper(int value, BSTNode root)
{
if (this.Root == null) //empty tree, make new node
{
BSTNode node = new BSTNode(value);
this.Root = node;
}
else if (value < this.Root.Num)
{
insertHelper(value, Root.Left);
}
else if (value > this.Root.Num)
{
insertHelper(value, Root.Right);
}
}
내가 그것을 기술적으로 쉽게해야한다하더라도 그들과 거래를하지 않아도 포인터를 사용하지 않고 잃어버린 느낌 :
여기 내 코드입니다. 누군가 논리적으로 정확한 부분이 아닌 것을 지적 해 주시겠습니까? 감사!
이 종류의 동일 그 여분의 널 (null) 검사를 추가하지 않을까요
재귀를 사용하면 초기 검사로 돌아가므로 이번에는 검사 할 루트가 왼쪽 노드가 될 것입니다 (value, root.Left)? – CodySig'this.Root'를 사용하는 방식 때문에 null 체크가 필요합니다. 보낸 사람이 무엇이든, 'this.Root''는 항상 같은 객체입니다. 그런 다음 null 검사를 제거하려면 다르게 구현해야합니다. –
오케이 그 말이 맞다. temp = temp.Left 또는 temp.Right 등을 사용하여 임시 노드를 가로 지르는 다른 방법이있다. – CodySig