在二叉树中找值为x的结点(假设所有结点的值都不一样)
来源:互联网 发布:猎隼软件 编辑:程序博客网 时间:2024/04/26 01:33
#include<iostream>#include<stack>#define N 7using namespace std;typedef struct node{struct node *leftChild;struct node *rightChild;int data;}BiTreeNode, *BiTree;// 生成一个结点BiTreeNode *createNode(int i){BiTreeNode * q = new BiTreeNode;q->leftChild = NULL;q->rightChild = NULL;q->data = i;return q;}BiTree createBiTree(){BiTreeNode *p[N];int i;for(i = 0; i < N; i++)p[i] = createNode(i + 1);// 把结点连接成树for(i = 0; i < N/2; i++){p[i]->leftChild = p[i * 2 + 1];p[i]->rightChild = p[i * 2 + 2];}return p[0];}BiTreeNode *findElement(BiTree T, int element){if(NULL == T)return NULL;if(element == T->data)return T;BiTreeNode *p = findElement(T->leftChild, element);if(NULL != p)return p;return findElement(T->rightChild, element);}int main(){BiTree T = createBiTree();BiTreeNode *p; p = findElement(T, 0);cout << p << endl; cout << "************" << endl; p = findElement(T, 8);cout << p << endl; cout << "************" << endl; p = findElement(T, 1);cout << p->data << endl;cout << p->leftChild->data << endl;cout << p->rightChild->data << endl;cout << "************" << endl; p = findElement(T, 2);cout << p->data << endl;cout << p->leftChild->data << endl;cout << p->rightChild->data << endl;cout << "************" << endl; p = findElement(T, 3);cout << p->data << endl;cout << p->leftChild->data << endl;cout << p->rightChild->data << endl;cout << "************" << endl; p = findElement(T, 4);cout << p->data << endl;cout << p->leftChild << endl;cout << p->rightChild << endl;cout << "************" << endl; p = findElement(T, 5);cout << p->data << endl;cout << p->leftChild << endl;cout << p->rightChild << endl;cout << "************" << endl; p = findElement(T, 6);cout << p->data << endl;cout << p->leftChild << endl;cout << p->rightChild << endl;cout << "************" << endl; p = findElement(T, 7);cout << p->data << endl;cout << p->leftChild << endl;cout << p->rightChild << endl;cout << "************" << endl; return 0;}
结果如下:
00000000
************
1
2
3
************
2
4
5
************
3
6
7
************
4
00000000
00000000
************
5
00000000
00000000
************
6
00000000
00000000
************
7
00000000
00000000
************
- 在二叉树中找值为x的结点(假设所有结点的值都不一样)
- 在二叉树中找值为x的结点(假设所有结点的值都不一样)
- 二叉树中查找值为x的结点,打印x结点的全部祖先
- 2.2删除带头结点的L中所有值为x的结点
- 设计一个递归算法,删除不带头结点的单链表中所有值为x的结点
- 头插法,尾插法,创建单链表,然后删除所有结点值为x的结点
- 在二叉树t中查找值为x的结点
- 【Java】以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于等于x的结点之前
- 项目一--删除结点值为X的结点
- 删除二叉树中的度数为1的所有结点
- 求二叉树中值为x的结点的个数
- 值x将链表划分为两部分,小于x的结点排在大于或等于x 的结点之前
- 设计一个递归算法,删除不带头结点的单链表L中所有值为x的结点
- 打印二叉树根结点到所有叶子结点的路径
- 求二叉树中结点值的和为指定整数的所有路径
- 打印出二叉树中结点值的和为输入整数的所有路径
- 求二叉树中以x为值的根结点的子树的深度
- 每周数据结构【1】:不带头结点删除所有值为x的节点
- android SDK 更新出现错误的解决办法
- Java中的IO
- 【iOS知识学习】_iOS面试题汇总(一)
- (android控件)ImageSwitcher介绍和使用说明
- javahl subclipse 64 bit installation on windows
- 在二叉树中找值为x的结点(假设所有结点的值都不一样)
- 在线预览资料
- UITextField 设置字体垂直居中
- Hadoop面试题
- Mediation Ad Network Management 各广告优势市场。
- android 配置 在/res/raw下使用
- Java利用MessageDigest获取字符串或文件MD5详解
- 共享中断
- Qt简介以及如何配置Qt使用VS2010进行开发