(c#)재귀호출관련해서 프로퍼티 사용방법이 이해가 잘 안갑니다.
자료구조 공부중인데
c#으로 이진트리를 만들어보다가 도저히 구조가 머리속으로 그려지질 않아 이렇게 도움을 요청합니다.
//메인 실행 코드입니다.
BinaryTree bTree = new BinaryTree();
bTree.root = new BinaryTreeNode(1);
bTree.root.left = new BinaryTreeNode(2);
bTree.root.right = new BinaryTreeNode(3);
bTree.root.left.left = new BinaryTreeNode(4);
bTree.root.left.right = new BinaryTreeNode(5);
bTree.root.left.right.right = new BinaryTreeNode(6);
bTree.root.left.right.left = new BinaryTreeNode(7);
bTree.root.left.right.left.right = new BinaryTreeNode(8);
bTree.PreOrderTraversal(bTree.root);
//이진 트리 노드 클래스
internal class BinaryTreeNode
{
public T data { get; set; }
public BinaryTreeNode left { get; set; }
public BinaryTreeNode right { get; set; }
public BinaryTreeNode(T data)
{
this.data = data;
}
}
//이진 트리 클래스
internal class BinaryTree
{
public BinaryTreeNode root { get; set; }
//트리 데이타 출력(전위탐색)
public void PreOrderTraversal(BinaryTreeNode node)
{
if (node == null)
{
return;
}
Debug.Log(node.data);
PreOrderTraversal(node.left);
PreOrderTraversal(node.right);
}
}
저기 메인 실행 코드를 보면
프로퍼티를 줄줄이 소세지마냥 left.left.left 이런식으로 줄줄이 쓸수가 있는데
이게 이해가 잘 안갑니다.
left라는 메서드안에 left라는 메서드안에 left라는 메서드에 노드를 생성한다?
그리고,
이진 트리 클래스 부분에
node를 파괴시키거나 값을 바꾸는 부분이 없는것같은데 어떻게 노드트리를 하나하나씩 타고갈 수 있는거죠?
어떻게 node가 null로 갈 수있는건지 이해가 잘 안됩니다.
댓글 달기