第十二题 将二叉查找树左右节点反转
2014-04-13 17:21
190 查看
例如输入:
8
/ \
6 10
/\ /\
5 7 9 11
输出:
8
/ \
10 6
/\ /\
11 9 7 5
8
/ \
6 10
/\ /\
5 7 9 11
输出:
8
/ \
10 6
/\ /\
11 9 7 5
//将二叉查找树左右节点反转 #include <iostream> using namespace std; struct tree { int value; tree *left; tree *right; }; void addTree(tree *&ptr,int value) { if (ptr==nullptr) { tree *currentptr=new tree(); currentptr->value=value; currentptr->left=nullptr; currentptr->right=nullptr; ptr=currentptr; } else { if (ptr->value>value) { addTree(ptr->left,value); } else { addTree(ptr->right,value); } } } void reversetree(tree *&ptr) { if (ptr==nullptr) { return; } //判断是否为叶子节点 bool isleaf=(ptr->left&&ptr->right); if (isleaf) { //交换左右节点 tree *temp=ptr->left; ptr->left=ptr->right; ptr->right=temp; if (ptr->left) { reversetree(ptr->left); } if (ptr->right) { reversetree(ptr->right); } } } int main() { tree *root=nullptr; addTree(root,8); addTree(root,10); addTree(root,6); addTree(root,9); addTree(root,11); addTree(root,5); addTree(root,7); reversetree(root); cout<<root->value<<endl; cout<<root->left->value<<endl; cout<<root->left->left->value<<endl; return 0; }
相关文章推荐
- 链表反转和找出链表中间节点
- 在二叉查找树中插入节点
- 在二叉查找树中插入节点
- PHP 将二叉查找树转换为双向链表,要求不能创建新节点,只能调节节点指针
- 寻找二叉查找树中比指定值小的所有节点中最大的那个节点
- 二叉查找树后继节点和前驱节点查找
- 算法-二叉查找树-插入节点
- 【故障公告】10:30-10:45 左右 docker swarm 集群节点问题引发故障
- 二叉查找树中寻找下一个节点
- leetCode 25.Reverse Nodes in k-Group (以k个节点为一组反转链表) 解题思路和方法
- leetcode_234. Palindrome Linked List 判断单链表是否为回文串,快慢指针法找中间节点,反转单链表
- 在二叉查找树中插入节点
- 编写算法交换二叉树中所有节点的左右子树
- H5基础知识第十二课时(节点的查看、添加和删除)
- LeetCode 刷题: 左右反转一个二叉树
- 算法-二叉查找树-插入节点
- 将一棵二叉树的全部节点的左右子树交换顺序
- 二叉查找树中节点的删除
- 6_43_递归交换二叉树中所有节点的左右子树
- 将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并使奇数之间顺序反转,偶数之间顺序反转。