二叉树基础知识

树是n(n>=0)个节点的有限集,且这些节点满足如下关系:
(1)有且仅有一个节点没有父结点,该节点称为树的根。
(2)除根外,其余的每个节点都有且仅有一个父结点。
(3)树中的每一个节点都构成一个以它为根的树。
二叉树在满足树的条件时,满足如下条件: 每个节点最多有两个孩子(子树),这两个子树有左右之分,次序不可颠倒。


二叉树构造
#include<stdio.h>
struct TreeNode{
    int val;
    TreeNode *left;
    TreeNode *right;
    TreeNode(int x) : val(x),left(NULL),right(NULL){}
};
void preorder_print(TreeNode *node, int layer){
    if(!node){
        return;
    }
    for(int i = 0; i < layer; i++){
    }
    printf("{%d}\n",node->val);
    preorder_print(node->left, layer + 1);//遍历左子树,层数+1
    preorder_print(node->right, layer + 1);//遍历右子树,层数+1
}
int main(){
    TreeNode a(1);
    TreeNode b(2);
    TreeNode c(5);
    TreeNode d(3);
    TreeNode e(4);
    TreeNode f(6);
    a.left = &b;
    a.right = &c;
    b.left = &d;
    b.right = &e;
    c.right = &f;
    preorder_print = (&a,0);
    return 0;
}
二叉树的深度遍历

1.前序遍历:a(1),b(2),c(3),d(4),e(5),f(6)
2.中序遍历:3,2,4,1,5,6
3.后续遍历:3,4,2,6,5,1

void traversal_qian(TreeNode * node, int layer){
    if(!node){
        return;
    }
for(int i = 0;i < layer;i++){
    printf("-----");
}
printf("[%d\n]",node->val);
traversal_qian(node->left, layer +1);
traversal_qian(node->right,layer+1);
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 树的概述 树是一种非常常用的数据结构,树与前面介绍的线性表,栈,队列等线性结构不同,树是一种非线性结构 1.树的定...
    Jack921阅读 10,036评论 1 31
  • 树的定义 树是n(n>=0)个元素的的有限集合。在任何一颗非空树中: 有且仅有一个节点被称为根节点,在整棵树最上面...
    随时学丫阅读 5,090评论 0 0
  • B树的定义 一棵m阶的B树满足下列条件: 树中每个结点至多有m个孩子。 除根结点和叶子结点外,其它每个结点至少有m...
    文档随手记阅读 14,603评论 0 25
  • 数据结构和算法--二叉树的实现 几种二叉树 1、二叉树 和普通的树相比,二叉树有如下特点: 每个结点最多只有两棵子...
    sunhaiyu阅读 11,610评论 0 14
  • 四、树与二叉树 1. 二叉树的顺序存储结构 二叉树的顺序存储就是用数组存储二叉树。二叉树的每个结点在顺序存储中都有...
    MinoyJet阅读 5,576评论 0 7

友情链接更多精彩内容