15.二叉树基础上

树:非线性表结构orz

概念直觉理解(节点、父子关系、兄弟节点、根节点、叶节点)
高度(类比楼房,叶节点为0,下往上递增)
vs深度(类比水面,根节点为0,上往下递增)
vs层数=深度+1

二叉树(Binary Tree)

=每个节点最多两个叉

满二叉树?不多不少嗯(叶子节点全在最底层,除叶子节点外的节点都有左右两个子节点

vs完全二叉树?(叶子节点都在最底两层且最后一层都靠左排列、除最后一层外每层的节点个数要达最大

表示/存储?

  • 链式存储法(基于指针/引用,节点=存储数据+指向左右子节点的指针)

  • 顺序存储法(基于数组,a[i]=父节点,a[2i]=左子节点,a[2i+1]=右子节点)

遍历?

顺序表示节点与其左右子树节点遍历打印的先后

时间复杂度O(n)

  • 前序遍历=父左右
void preOrder(Node* root) {
  if (root == null) return;
  print root // 此处为伪代码,表示打印root节点
  preOrder(root->left);
  preOrder(root->right);
}
  • 中序遍历=左父右
  • 后序遍历=左右父

你可能感兴趣的:(15.二叉树基础上)