泰州企业网站模板建站苍山县建设银行网站
news/
2025/9/28 7:55:18/
文章来源:
泰州企业网站模板建站,苍山县建设银行网站,wordpress请求接口的方式,网站图片延时加载1.树的表示
typedef int DadaType;
struct Node{struct Node* firstChild;struct Node* pnextBrotherDataType data;
};//树的表示
2.二叉树的简介
二叉树是一种树形数据结构#xff0c;每个节点最多有两个子节点#xff0c;分别称为左子节点和右子节点。二叉树具有以下特…1.树的表示
typedef int DadaType;
struct Node{struct Node* firstChild;struct Node* pnextBrotherDataType data;
};//树的表示
2.二叉树的简介
二叉树是一种树形数据结构每个节点最多有两个子节点分别称为左子节点和右子节点。二叉树具有以下特点
1. 根节点二叉树的顶端节点称为根节点它没有父节点。 2. 子节点每个节点最多有两个子节点分别称为左子节点和右子节点。 3. 叶节点没有子节点的节点称为叶节点。 4. 深度从根节点到某个节点的唯一路径上的节点数称为该节点的深度。 5. 高度从某个节点到叶节点的最长路径上的节点数称为该节点的高度。 6. 完全二叉树除了最底层之外每一层的节点都是满的并且最底层的节点都靠左排列。 7. 满二叉树每个节点要么没有子节点要么有两个子节点。
二叉树可以用来表示表达式、文件系统、数据库索引等各种数据结构和算法问题。常见的二叉树遍历方式有前序遍历、中序遍历和后序遍历。
3.二叉树图例部分
1.普通二叉树
普通二叉树是一种最基本的二叉树每个节点最多有两个子节点分别称为左子节点和右子节点。普通二叉树没有特定的规则或性质节点的插入和删除可以任意进行因此它的形态和结构比较灵活。
以下是一个示例普通二叉树的图示 1 / \ 2 3 / \ / \ 4 5 6 7
在这个例子中这是一个普通二叉树每个节点最多有两个子节点节点的插入和删除可以随意进行没有特定的规则限制。普通二叉树常用于表示一般的树形结构如文件系统、家谱等。
2.完全二叉树
完全二叉树是一种特殊的二叉树除了最底层之外每一层的节点都是满的并且最底层的节点都靠左排列。在完全二叉树中如果某个节点的索引为i从1开始则它的左子节点的索引为2i右子节点的索引为2i1。
以下是一个示例完全二叉树的图示 1 / \ 2 3 / \ / 4 5 6
在这个例子中这是一个完全二叉树因为每一层的节点都是满的除了最底层的节点6之外其他节点都是靠左排列的。完全二叉树常用于堆数据结构的实现具有较好的性能特性。
3.满二叉树
满二叉树是一种特殊的二叉树每个节点要么没有子节点要么有两个子节点。除了叶节点外每个节点都有两个子节点。满二叉树的叶节点都在同一层且所有非叶节点的度都是2。
以下是一个示例满二叉树的图示 1 / \ 2 3 / \ / \ 4 5 6 7
在这个例子中这是一个满二叉树每个节点要么没有子节点要么有两个子节点所有非叶节点的度都是2。满二叉树在计算机科学中常用于堆数据结构的实现具有一些特殊的性质和应用。
4.二叉树遍历
1.前序遍历
在前序遍历中对于任意节点先访问该根节点然后递归地对其左子树进行前序遍历最后递归地对其右子树进行前序遍历。
以下是一个示例二叉树的前序遍历顺序节点值用数字表示 1/ \2 3/ \ / \4 5 6 7前序遍历的结果为1, 2, 4, 5, 3, 6, 7。
在这个例子中前序遍历先访问根节点1然后递归地对左子树进行前序遍历2, 4, 5最后递归地对右子树进行前序遍历3, 6, 7。
2.中序遍历
在中序遍历中对于任意节点先递归地对其左子树进行中序遍历然后访问该节点最后递归地对其右子树进行中序遍历。
以下是一个示例二叉树的中序遍历顺序节点值用数字表示 1 / \ 2 3 / \ / \ 4 5 6 7
中序遍历的结果为4, 2, 5, 1, 6, 3, 7。
在这个例子中中序遍历先递归地对左子树进行中序遍历4, 2, 5然后访问根节点1最后递归地对右子树进行中序遍历6, 3, 7。
3.后序遍历
它的遍历顺序是先递归地对左子树进行后序遍历然后递归地对右子树进行后序遍历最后访问根节点。左右根
在后序遍历中对于任意节点先递归地对其左子树进行后序遍历然后递归地对其右子树进行后序遍历最后访问该根节点。
以下是一个示例二叉树的后序遍历顺序节点值用数字表示 1 / \ 2 3 / \ / \ 4 5 6 7
后序遍历的结果为4, 5, 2, 6, 7, 3, 1。
在这个例子中后序遍历先递归地对左子树进行后序遍历4, 5, 2然后递归地对右子树进行后序遍历6, 7, 3最后访问根节点1。
代码示例单纯只是定义了函数
#includebits/stdc.h
using namespace std;
typedef int DadaType;
struct Node{struct Node* firstChild;struct Node* pnextBrotherDataType data;
};//树的表示
//二叉链
struct binaryTreeNode{struct binaryTreeNode* pleft;struct binaryTreeNode* pright;
}BTnode;
void PreOrder(BTnode *root){//前序遍历(根左右)if(rootNULL){printf(NULL);return;}printf(%d,root-data);PreOrder(root-pleft);PreOrder(root-pright);
}
void Inorder(BTnode *root){//中序遍历左根右if(rootNULL){printf(NULL);return;}Inorder(root-pleft);printf(%d,root-data);Inorder(root-pright);
}
void PostOrder(Btnode *root){//后序遍历左右根if(rootNULL){printf(NULL);}PostOrder(root-pleft);printf(%d,root-data);PostOrder(root-pright);
}
void destroyOrder(BTnode *root){if(rootNULL){return;}destroyOrder(root-pleft);destroyOrder(root-pright);free(root);rootNULL;
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/920335.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!