[各种面试题] 将一棵普通二叉树转换为一棵线索二叉树
来源:互联网 发布:mac口红吧怎么看真假 编辑:程序博客网 时间:2024/06/05 19:35
将一棵普通二叉树转换为一棵线索二叉树(查看定义)。
详细说明:树结点除了包含left
, right
指针外,还包含isLeftThread
和isRightThread
,初始时isLeftThread
和isRightThread
都为false。对于left
为null
的结点,请将left
设置为中序遍历该结点的前驱结点,并将isLeftThread
设置为true。对于right
为null
的结点,请将right
设置为中序遍历该结点的后继结点,并将isRightThread
设置为true
。
提示:请尝试使用非递归算法。
第一反应还是中序遍历然后递归,先忽略提示使用非递归吧。
又是对着错的测试用例然后改了下代码才A过。
/*树结点的定义(请不要在代码中定义该结构)struct TreeNode { TreeNode *left, *right; bool isLeftThread, isRightThread;}*/void inorder(TreeNode* root,TreeNode*& pre,int& preNeedSet);void convertToThreadedTree(TreeNode *root) {if ( !root ) return;TreeNode* pre=NULL;int preNeedSet=0;inorder(root,pre,preNeedSet);if (pre&&preNeedSet )pre->isRightThread=true;}void inorder(TreeNode* root,TreeNode*& pre,int& preNeedSet){if (!root )return;inorder(root->left,pre,preNeedSet);if ( !root->left ){root->isLeftThread=true;if ( pre ){root->left = pre;}} if ( pre&&preNeedSet ){pre->isRightThread=true;pre->right=root;}pre=root;if (!root->right )preNeedSet=1; else preNeedSet=0;inorder(root->right,pre,preNeedSet);}
- [各种面试题] 将一棵普通二叉树转换为一棵线索二叉树
- 二叉树面试题以及线索化二叉树
- [各种面试题] 二叉树旋转查询
- /***/二叉树经典面试题之判断一棵二叉树是否是完全二叉树
- 二叉树相关的面试题<一>
- 二叉树的面试题(一)
- 二叉树面试题汇总(一)
- 二叉树面试题(一)
- 二叉树面试题
- 【面试题】-二叉树
- 二叉树面试题
- 二叉树 面试题
- 二叉树面试题
- 二叉树面试题
- 二叉树面试题
- 【面试题】二叉树
- 【面试题】二叉树
- 二叉树面试题
- 面试题。。虽然没有答案,但是能激发自己的想象
- 并发服务器:多路复用I/O
- 浮点数的二进制表示
- linux zip压缩命令解压命令
- 单调队列-hdu-3415-Max Sum of Max-K-sub-sequence
- [各种面试题] 将一棵普通二叉树转换为一棵线索二叉树
- Java核心技术,让计算机"一芯多用"的多线程技术
- POJ 3678 Katu Puzzle (2-sat,4级)
- 俞敏洪+马云+牛根生+史玉柱经典语录
- Ubuntu下Samba服务器的搭建
- 一天之内可以完成的事
- 如何合并apk和odex文件
- poj 1696 Space Ant(计算几何)
- HDU 3622 Bomb Game (二分+2-sat,4级 )