트리와 이진 트리의 기본 개념

트리와 이진 트리의 기본 개념

  1. 트리의 기본 개념을 잡고
  2. 트리의 개념을 잡고
  3. 마스터 트리 표현
  4. 기본 개념과 이진 트리의 특성을 잘 알고
  5. 개념에 익숙한뿐만 아니라 전체 이진 트리 완전 이진 트리
  6. 이진 트리의 자연과 친숙한 : 12345
  7. 친숙한 저장 이진 트리
  1. 트리의 기본 개념을 잡고

트리 데이터 구조는, n은 비선형이다 (N> = 0) 계층 적 관계를 갖는 노드들의 유한 집합. 그것은 상하와 잎 뿌리는 것을 의미 거꾸로 나무처럼 보이기 때문에 우리는 나무를 호출합니다. 그것은 다음과 같은 특징이 있습니다 : 각 노드는 0 개 이상의 자식 노드가, 부모 노드가 루트 노드라고하지, 각 루트가 아닌 노드는 부모 노드가, 루트 추가, 각 자식 노드는 복수로 나눌 수 있습니다 분리 된 하위 트리.

  1. 트리의 개념을 잡고

노드 : 노드의 포함하는 노드 번호 하위 트리를 참조한다.
터미널 노드 또는 리프 노드 : 노드 0도.
비 말단 노드 또는 분기 노드 : 노드도가 0이된다.
부모 또는 부모 노드 : 노드가 자식 노드를 포함하는 경우,이 노드가 자식 노드에 부모 노드라고합니다.
자식 노드 또는 자식 노드 : 트리 노드의 루트는 아이가 그 노드의 자식이라고이 포함되어 있습니다.
형제 노드 : 같은 부모 노드를 가진 노드는 상호 형제 노드라고합니다.
나무 : 나무, 트리의 최대 레벨의 노드가 호출됩니다.
레벨 노드 : 루트에서 시작의 정의에서 제 1 층의 루트는 두 번째 루트 레벨의 자녀합니다.
트리 노드의 트리 높이 또는 깊이의 최대 수준.
사촌 노드 : 같은 레벨의 노드에서 서로 부모 사촌.
조상 노드 : 노드에 이르기까지 루트에서 나뭇 가지에 모든 노드.
아들 후손 노드 중 어느 하나에 언급되는 노드를 루트로하는 서브 트리의 노드.
포레스트 : m 의해 끊긴 나무 트리 세트 (0 m> =).

  1. 마스터 트리 표현

어린이 표기법, 표기법 부모, 형제, 자녀 표기 : 트리 구조는 실제로 같은 많은 나무 표현,있다, 더 어려운 표현, 상대적으로 복잡한 선형 형태입니다.
어린이 표기 :

struct Node
{
	TDataType _data;
 struct Node* child1;
 struct Node* child2;
 struct Node* child3;
}

부모 표기 :

struct Node
{
	TdataType _data;
	struct Node* _parent;
}

형제 어린이 표기 :

struct Node
{
	struct Node* _child1;
	struct Node* _pNextBrother;
	TDataType _data;
}
  1. 기본 개념과 이진 트리의 특성을 잘 알고

이진 트리 노드의 유한 집합, 또는 설정이 비어 있거나 루트 노드 플러스 두 가지로 구성되어 있으며 각각 진 구성의 왼쪽 서브 트리 우측 서브 트리를했다.
이진 트리 기능 :

  1. 각 노드는 최대 두 개의 하위 트리보다 큰 2 개 노드에 존재하지 않는 이진 트리가 있습니다.
  2. 진 나무는 되돌릴 수 없습니다 세분화 자신의 서브 트리의 순서에 대해이있다.
  1. 개념에 익숙한뿐만 아니라 전체 이진 트리 완전 이진 트리
  1. 전체 이진 트리 : 각 계층의 노드 수가 최대에 도달 한 경우 이진 트리가, 다음, 이진 트리 전체 이진 트리입니다. 층 이진수 K이고, 전체 노드의 개수 (2 ^ k)는 -1, 그것은 완전한 바이너리 트리 인 경우 즉,이다.
  2. 이진 트리를 완료 완전한 이진 트리 데이터 구조는 고효율, 완전 이진 트리 전체 이진 트리이며, 리드 아웃. 깊이는 K이며, 그 각각라는 이진 트리 노드 1에서 n으로 다음 K 이진 트리 노드 번호의 전체 깊이있는 경우에만 경우, n 개의 노드의 이진 트리가있다. 완전 이진 트리가 완전 이진 트리의 특별한 종류 있습니다.
  1. 이진 트리의 자연과 친숙한 : 12345

(1) 루트 노드 층의 소정 수가 1 이진 트리 빈에, i 번째 층 (2) 이외의 최대이면 I-1 은 (i> 0) 노드
의 경우의 (2)의 깊이를 특정 이진 트리의 루트 노드 노드 (1)는 최대 깊이 k의 이진 트리가 2 K -1 (K> 0)
리프 노드 N0 인 개수가 비 리프 노드 (2)의 개수 인 경우, 어느 하나의 이진 트리. (3) N2이다 = N2가 +1 N0
. (4)의 깊이 (K) 로그의 N 개 노드의 완전한 바이너리 트리 갖는 2 (N +. 1) 올림
부터 순서 (5) 완전한 바이너리 트리가 n 개의 노드가 있으면 왼쪽에서 오른쪽으로 다음 모든 노드에 대해 0에서 시작하는 번호가 다음 노드의 수 i가 있습니다 :

  • 만약 I> 0, 숫자 부모는 (i - 1) / 2
  • 만약 2I + 1 <N, 왼쪽 아이 번호 : 2I + 1, 또는 다른 자식은 남아 있지
  • 만약 2I + 2 <N 오른쪽 자식 ID : 2I + 2, 그렇지 않으면 올바른 자녀 없음
  1. 친숙한 저장 이진 트리

일반적으로 두 이진 트리 구조 저장, 순차적 인 구조 A를 체인 구조가 있습니다.
순서대로 저장 :
순서는 폐기물 이진 트리 공간을 완료하지 않기 때문에, 일반적으로 배열이 완전 이진 트리를 나타냅니다만을 사용, 저장하는 스토리지 배열의 구조를 사용하는 것입니다. 그러나 현실에서, 단지 힙을 사용하는 것은 우리가 구체적으로 설명 할 것이다 힙 다음 장에 저장할 배열을 사용합니다. 이진 순서는 논리적 이진 트리, 물리적 배열에 저장된다.
여기에 그림 삽입 설명
체인 저장 :
저장 구조 이진 트리가 링크 된리스트가 논리 소자의 체인을 나타내는데, 즉,이 바이너리 트리를 나타내는 지칭한다. 일반적인 방법은, 세 개의 필드 포인터 주위 데이터 필드 및 필드의 각 노드의 링크 된리스트이며, 포인터가 자식 메모리 어드레스의 우측 자식 노드 좌측 힌지 포인트에 대해 제공하기 위해 사용된다. 사슬 구조는 이진 삼차 체인 및 체인으로 분할된다.
여기에 그림 삽입 설명

// 二叉链
struct BinaryTreeNode
{
struct BinTreeNode* _pLeft; // 指向当前节点左孩子
struct BinTreeNode* _pRight; // 指向当前节点右孩子
BTDataType _data; // 当前节点值域
}
// 三叉链
struct BinaryTreeNode
{
struct BinTreeNode* _pParent; // 指向当前节点的双亲
struct BinTreeNode* _pLeft; // 指向当前节点左孩子
struct BinTreeNode* _pRight; // 指向当前节点右孩子
BTDataType _data; // 当前节点值域
}

추천

출처blog.csdn.net/PNUHC/article/details/90550644