查找 二叉树中 k1 到 k2区间的节点

 1     vector<int> res;
 2     int key1, key2;
 3
 4     void traverse(TreeNode * root){//采用前序遍历
 5         if(root == NULL)
 6             return;
 7         if(key1 <= root->val && key2 >= root->val)//满足条件的就存入
 8             res.push_back(root->val);
 9         traverse(root->left);
10         traverse(root->right);

原文地址:https://www.cnblogs.com/wfq9330/p/9560660.html

时间: 2024-08-30 01:56:37

查找 二叉树中 k1 到 k2区间的节点的相关文章

求二叉树中相差最大的两个节点间的差值绝对值

题目描述: 写一个函数,输入一个二叉树,树中每个节点存放了一个整数值,函数返回这棵二叉树中相差最大的两个节点间的差值绝对值.请注意程序效率. solution: int findMinMax(BTNode *T) { if(!T) return 0; int max = INT_MIN; int min = INT_MAX; stack<BTNode*> s; s.push(T); while (!s.empty()) { BTNode *tmp = s.top(); if(tmp->d

【剑指offer】8、二叉树中序遍历的下一个节点

题目 给定一个二叉树和其中一个节点,找出中序遍历的下一个节点.注意:树的节点中除了有指向左右节点的指针,还有指向父节点的指针. 思路 (1)若该节点Node有右子树,则下一个节点就是右子树中的最左节点,就是在右节点中一直往左子树找. (2)若Node没有右子树 (i)Node是左子节点,则下一个节点就是node的父节点. (ii)Node是右子节点,则下一个节点就要一直向上找,找到第一个左子节点,也就是第一种情况. /* struct TreeLinkNode { int val; struct

查找二叉树中符合特定条件的值

总结了一下基本用到的公式. 下面用数组存了下,循环求解了 /* 满二叉树:一棵深度为h,且有2的(h)次方-1个节点的二叉树 特点:每一层上的结点数都是最大结点数 它的叶子数是: 2^(h-1) 第k层的结点数是: 2^(h-1) 总结点数是: 2^h-1 (2的k次方减一) 总节点数一定是奇数.所以 2^h-1=127,得出h=7.叶子数为:2^(h-1)=2^(7-1)=64 ----------------------------------------------------------

二叉树中序遍历的下一个节点

题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. 思路:分多种情况讨论 1 /* 2 struct TreeLinkNode { 3 int val; 4 struct TreeLinkNode *left; 5 struct TreeLinkNode *right; 6 struct TreeLinkNode *next; 7 TreeLinkNode(int x) :val(x), left(NU

求一颗二叉树中最远的两个节点的距离

#include <iostream> using namespace std; typedef struct tagNode { char data; tagNode *lchild; tagNode *rchild; }*PNode; void createtree(PNode &T) { char c; cin >> c; if(c == ',')return; else { T = new tagNode; T->data = c; T->lchild

数据结构与算法(c++)——查找二叉树与中序遍历

查找树ADT--查找二叉树 定义:对于树中的每个节点X,它的左子树中的所有项的值小于X中的项,而它的右子树中所有项的值大于X中的项. 现在给出字段和方法定义(BinarySearchTree.h) #include <queue> class BinarySearchTree { private: struct Node { int value; Node* left; Node* right; }; Node* root; void insert(Node*, int); void trav

查找二叉树

[问题描述] 已知一棵二叉树用邻接表结构存储,中序查找二叉树中值为x的结点,并指出是第几个结点.例:如图二叉树的数据文件的数据格式如下 7 15 5 2 3 12 4 5 10 0 0 29 0 0 15 6 7 8 0 0 23 0 0 •‘ 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 struct node 6 { 7 int parent;

IT公司100题-11-求二叉树中节点的最大距离

问题描述: 写程序,求一棵二叉树中相距最远的两个节点之间的距离. 10/     \6      14/   \   /   \4    8 12    16 分析: 二叉树中最远的两个节点,要么是根和一个叶子节点,要么是两个叶子节点. 代码实现: 1 // 11.cc 2 #include <iostream> 3 using namespace std; 4 5 typedef struct BSTreeNode { 6 int data; 7 BSTreeNode *left; 8 BS

查找二叉树(tree_a)

查找二叉树(tree_a) 连接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1367时间限制: 1000 ms         内存限制: 65536 KB [题目描述] 已知一棵二叉树用邻接表结构存储,中序查找二叉树中值为x的结点,并指出是第几个结点.例:如图二叉树的数据文件的数据格式如下: [输入] 第一行n为二叉树的结点个树,n<=100:第二行x表示要查找的结点的值:以下第一列数据是各结点的值,第二列数据是左儿子结点编号,第三列数据是右