当前位置:   article > 正文

知识点8:二叉树根据节点的val值返回对应的节点_二叉树val什么意思

二叉树val什么意思

非递归的方式,用栈实现

BTree* return_by_val(int val,BTree *root) {
	stack<BTree*> s;
	BTree* cur = root;
	while (cur!=nullptr||!s.empty()) {
		while (cur!=nullptr)
		{
			s.push(cur);
			cur = cur->left;
		}
		if (cur==nullptr) {
			cur = s.top();
			if (cur->val==val) {
				return cur;
			}
			s.pop();
		}
		cur = cur->right;
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

root为根节点,根据形参的val值来找到对应val的节点并返回该节点
非递归的方式虽然写起来麻烦,但是坑少

递归的方式(有一处坑)

	//递归方式
	static BTree* temp = nullptr;  //static非常重要
	if (root) {
		if (root->val == val) {
			temp = root;
		}
		return_by_val(val, root->left);
		return_by_val(val,root->right);
	}
	return temp;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

刚开始写非递归的方式一直报错的原因是因为第一句话。
如果不加static的话,每执行一次递归操作,都要重新创建一个temp节点,导致最后返回temp节点为空
这是一个知识点,若要用递归时一定要记住!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/110676
推荐阅读
相关标签
  

闽ICP备14008679号