输出二叉树中,第m层的第k个节点值
来源:互联网 发布:走遍中国中国古镇 知乎 编辑:程序博客网 时间:2024/06/04 22:53
给定以下二叉树:
struct node_t
{
node_t *left, *right;
int value;
};
要求编写函数 node_t* foo(node_t *node, unsigned int m, unsigned int k);
输出以 node 为根的二叉树第 m 层的第 k 个节点值.
(level, k 均从 0 开始计数)
注意:
.此树不是完全二叉树;
.所谓的第K个节点,是本层中从左到右的第K个节点
分析: 此处,需要层序遍历二叉树,然后,计数找到第m层第k个节点。Node* GetMLNElem( Node *pNode, UINT m, UINT n ){int level = 0, count = 0, levelNum = 0;queue<Node *> elemQueue;if ( pNode != NULL ){<span style="white-space:pre"></span>elemQueue.push( pNode );while ( !elemQueue.empty() ){// 获取上一层的节点个数levelNum = elemQueue.size();while ( levelNum > 0 ){--levelNum;Node *pTemp = elemQueue.front();elemQueue.pop();// 找到符合条件的元素,直接返回++count;if ( level == m && count == n ){return pTemp;}if ( pTemp->left != NULL ){elemQueue.push( pTemp->left );}if ( pTemp->right != NULL ){elemQueue.push( pTemp->right );}}++level;count = 0;}}return NULL;}
struct node_t
{
node_t *left, *right;
int value;
};
要求编写函数 node_t* foo(node_t *node, unsigned int m, unsigned int k);
输出以 node 为根的二叉树第 m 层的第 k 个节点值.
(level, k 均从 0 开始计数)
注意:
.此树不是完全二叉树;
.所谓的第K个节点,是本层中从左到右的第K个节点
Node* GetMLNElem( Node *pNode, UINT m, UINT n ){int level = 0, count = 0, levelNum = 0;queue<Node *> elemQueue;if ( pNode != NULL ){<span style="white-space:pre"></span>elemQueue.push( pNode );while ( !elemQueue.empty() ){// 获取上一层的节点个数levelNum = elemQueue.size();while ( levelNum > 0 ){--levelNum;Node *pTemp = elemQueue.front();elemQueue.pop();// 找到符合条件的元素,直接返回++count;if ( level == m && count == n ){return pTemp;}if ( pTemp->left != NULL ){elemQueue.push( pTemp->left );}if ( pTemp->right != NULL ){elemQueue.push( pTemp->right );}}++level;count = 0;}}return NULL;}
0 0
- 输出二叉树中,第m层的第k个节点值
- 输出二叉树第 m 层的第 k 个节点值
- 二叉树m层的第k个节点
- 输出二叉树中第m层的第k个节点值
- 二叉树第K层的第M个节点 -- 采用非递归层次遍历实现
- 求非完全二叉树第m层第k个节点
- 求非完全二叉树第m层第k个节点
- 百度笔试题:求非完全二叉树第m层第k个节点
- 求二叉树第m层上的第K个结点的值
- 二叉树(9)----打印二叉树中第K层的第M个节点,非递归算法
- 打印二叉树中第m层第k个节点(递归+非递归)
- C++算法之 求二叉树第k层的节点的个树
- 求二叉树第k 层的节点数
- 求二叉树第K层的节点个数
- 二叉树第k层的叶子节点数
- 二叉树输出先序遍历的第k个节点
- 二叉搜索树的第k个节点
- 二叉搜索树的第k个节点
- 双向链表的基本操作
- Android NDK环境搭建与简单实例
- CheckStyle 使用简介
- Binary Tree Inorder Traversal leetCode11
- Picture 2050
- 输出二叉树中,第m层的第k个节点值
- 序列化工具---对象序列化类库MsgPack介绍
- java中Url处理
- C语言基本数据类型简介"黑马程序员"
- poj 1256 Anagram
- hdu 4183 Pahom on Water 最大流 isap
- 将子控件放到最前面或最后面
- 深入理解java异常处理机制
- 用匈牙利算法求二分图的最大匹配